powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы с сортировкой по полю из другой таблицы
11 сообщений из 11, страница 1 из 1
Выборка из таблицы с сортировкой по полю из другой таблицы
    #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
Выборка из таблицы с сортировкой по полю из другой таблицы
    #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
Выборка из таблицы с сортировкой по полю из другой таблицы
    #32520444
vavcg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал !
Действительно работает !
Хитро придумано !
Спасибо !

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

В том запросе, что я отправил в прошлый раз
результат будет ОДИНАКОВЫЙ как с DISTINCT,
так и без оного, вопрос в производительности -
см.мой предыдущий пост.
...
Рейтинг: 0 / 0
Выборка из таблицы с сортировкой по полю из другой таблицы
    #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
Выборка из таблицы с сортировкой по полю из другой таблицы
    #32520761
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vavcg

А distinct нужен по какому полю? или по всей строке?
...
Рейтинг: 0 / 0
Выборка из таблицы с сортировкой по полю из другой таблицы
    #32520859
vavcg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DISTINCT нужен по полю prep_id.
...
Рейтинг: 0 / 0
Выборка из таблицы с сортировкой по полю из другой таблицы
    #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
Выборка из таблицы с сортировкой по полю из другой таблицы
    #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
Выборка из таблицы с сортировкой по полю из другой таблицы
    #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
Выборка из таблицы с сортировкой по полю из другой таблицы
    #32520906
vavcg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Warning: PostgreSQL query failed: ERROR: Relation 'с' does not exist ...
Вот так вот.
А с IN заработало...
Что-то видимо в alias-ах...
pgSQL 7.1.3....
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы с сортировкой по полю из другой таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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