Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы с сортировкой по полю из другой таблицы / 11 сообщений из 11, страница 1 из 1
17.05.2004, 13:37
    #32520262
vavcg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Есть две таблицы :

cards (
prep_group int4;
prep_id int4;
)

и

preps (
prep_id int4;
prep_name char(512);
)

Мне нужно сделать следующее :

SELECT DISTINCT prep_id FROM cards WHERE prep_group='1234';

НО отсортировать полученный результат по значению поля prep_name
в таблице preps, т.е. по алфавиту .

Возможно ли это ?
...
Рейтинг: 0 / 0
17.05.2004, 14:12
    #32520386
Wireless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT prep_id
FROM preps
WHERE
         prep_id IN
               (SELECT [DISTINCT] prep_id 
                FROM cards 
                WHERE prep_group= 1234 )
ORDER BY prep_name

Должно работать.



P.S. лучше писать prep_group=1234, а не ='1234', так как это
все-таки int4, но так тоже будет работать, хотя
кто будет гарантировать что parser в ноывой версии будет
работать также?

P.P.S. если таблица cards значительно больше preps (по числу записей),
то оцени, возможно выгоднее (с т.з. производительности)
писать без DISTINCT. Дело в том, что сортировка связанная с
DISTINCT тоже время требует.
...
Рейтинг: 0 / 0
17.05.2004, 14:28
    #32520444
vavcg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Попробовал !
Действительно работает !
Хитро придумано !
Спасибо !

P.S. Без DISCTINCT ну никак нельзя :(.....
...
Рейтинг: 0 / 0
17.05.2004, 15:53
    #32520676
Wireless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
> P.S. Без DISCTINCT ну никак нельзя :(.....

В том запросе, что я отправил в прошлый раз
результат будет ОДИНАКОВЫЙ как с DISTINCT,
так и без оного, вопрос в производительности -
см.мой предыдущий пост.
...
Рейтинг: 0 / 0
17.05.2004, 16:23
    #32520755
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT с.prep_id FROM cards c
inner join preps p on c.prep_id = p.prep_id
WHERE c.prep_group='1234';
order by p.prep_name
...
Рейтинг: 0 / 0
17.05.2004, 16:24
    #32520761
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
2 vavcg

А distinct нужен по какому полю? или по всей строке?
...
Рейтинг: 0 / 0
17.05.2004, 17:04
    #32520859
vavcg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
DISTINCT нужен по полю prep_id.
...
Рейтинг: 0 / 0
17.05.2004, 17:07
    #32520867
vavcg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
авторSELECT DISTINCT с.prep_id FROM cards c
inner join preps p on c.prep_id = p.prep_id
WHERE c.prep_group='1234';
order by p.prep_name
Вот непонятно, что такое за c.prep_id и p.prep_id ...
...
Рейтинг: 0 / 0
17.05.2004, 17:16
    #32520891
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Вот непонятно, что такое за c.prep_id и p.prep_id ...

Айдишник в даблице cards и таблице preps соответственно, c и p - алиасы

Теперь к вопросу о дистинкте:
Код: plaintext
1.
2.
3.
4.
5.
SELECT DISTINCT с.prep_id, min(p.prep_name) FROM cards c
inner join preps p on c.prep_id = p.prep_id
WHERE c.prep_group='1234'
group by c.prep_id
order by p.prep_name;
...
Рейтинг: 0 / 0
17.05.2004, 17:17
    #32520892
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Впрочем prep_name необязательно
Код: plaintext
1.
2.
3.
4.
5.
SELECT DISTINCT с.prep_id FROM cards c
inner join preps p on c.prep_id = p.prep_id
WHERE c.prep_group='1234'
group by c.prep_id
order by p.prep_name;
...
Рейтинг: 0 / 0
17.05.2004, 17:24
    #32520906
vavcg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из таблицы с сортировкой по полю из другой таблицы
Warning: PostgreSQL query failed: ERROR: Relation 'с' does not exist ...
Вот так вот.
А с IN заработало...
Что-то видимо в alias-ах...
pgSQL 7.1.3....
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы с сортировкой по полю из другой таблицы / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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