Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выбрать более одного поля во вложенном запросе / 8 сообщений из 8, страница 1 из 1
02.07.2008, 14:28
    #35406621
выбрать более одного поля во вложенном запросе
Добрый день...
Можно ли в конструкции
Код: plaintext
1.
2.
SELECT 
(SELECT f1 FROM table  2 )
FROM table1
извернутся, таким образом что бы выбрать более одного поля во вложенном запросе?
Спасибо.
...
Рейтинг: 0 / 0
02.07.2008, 15:06
    #35406767
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбрать более одного поля во вложенном запросе
может быть с помощью функции query_to_xml
...
Рейтинг: 0 / 0
02.07.2008, 15:25
    #35406839
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбрать более одного поля во вложенном запросе
Вы лучше скажите что Вы хотите получить. потому что желание вставить в однострочную колонку несколько строк противоречит смыслу реляционных СУБД


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
02.07.2008, 15:56
    #35406919
выбрать более одного поля во вложенном запросе
ЁшВы лучше скажите что Вы хотите получить. потому что желание вставить в однострочную колонку несколько строк противоречит смыслу реляционных СУБД


Желание вставить в одну колонку нету.. есть желание в результирующем запросе увеличить количество колонок

сейчас примерно такой код

Код: plaintext
1.
2.
3.
4.
5.
SELECT 
table1.f1
,(SELECT f1 FROM table2 WHERE f3 = table1.f )
,(SELECT f2 FROM table2 WHERE f3 = table1.f )
FROM table1
т.к. подзапросы отличаются лишь именем поле хотелось бы примерно так:

Код: plaintext
1.
2.
3.
4.
SELECT 
table1.f1
,(SELECT f1,f2 FROM table2 WHERE f3 = table1.f )
FROM table1
...
Рейтинг: 0 / 0
02.07.2008, 16:06
    #35406964
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбрать более одного поля во вложенном запросе
а почему не подходит join ?
Код: plaintext
SELECT table1.f1, table2.f1, table2.f2 FROM table1 join table2 on (table2.f3 = table1.f );


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
02.07.2008, 17:03
    #35407164
выбрать более одного поля во вложенном запросе
Ёша почему не подходит join ?
Код: plaintext
SELECT table1.f1, table2.f1, table2.f2 FROM table1 join table2 on (table2.f3 = table1.f );

Виноват... хотел меньше деталей, запрос примерно такой:
Код: plaintext
1.
2.
3.
4.
5.
SELECT 
table1.f1
,(SELECT f1 FROM table2 WHERE f3 = table1.f  ORDER BY f_d desc limit  1 )
,(SELECT f2 FROM table2 WHERE f3 = table1.f  ORDER BY f_d desc limit  1 )
FROM table1
...
Рейтинг: 0 / 0
02.07.2008, 17:27
    #35407242
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбрать более одного поля во вложенном запросе
...
Рейтинг: 0 / 0
02.07.2008, 18:14
    #35407360
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбрать более одного поля во вложенном запросе
если в таблице table2 строк намного больше, чем в table1, то вариант с подзапросом в селект-листе может оказаться самым быстрым. обсуждали тут и в других темах.

получилось выбрать несколько полей используя ROW:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table t1 ( id integer, name text );
insert into t1 values (  1 , 'foo' );
insert into t1 values (  2 , 'bar' );

select *, (row2).* from (
        select
                t1.*, -- row1
                ( select cast( row(t2.*) as t1 ) from t1 as t2 where t2.id=t1.id+ 1  ) as row2
        from t1
) as a;

drop table t1;

Код: plaintext
1.
2.
3.
4.
 id | name |  row2   | id | name
----+------+---------+----+------
   1  | foo  | ( 2 ,bar) |   2  | bar
   2  | bar  |         |    |
( 2  rows)

http://www.postgresql.org/docs/8.3/static/sql-expressions.html#SQL-SYNTAX-ROW-CONSTRUCTORS
http://www.postgresql.org/docs/8.3/static/rowtypes.html
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выбрать более одного поля во вложенном запросе / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]