Я довольно новичок в SQL. Мне нужен запрос, который должен упорядочивать по минимуму некоторого столбца. Ниже приведен запрос, который я хочу.
SELECT *
FROM (
SELECT p.PROJECT_ID,
p.PROJECT_NAME,
p.PROJECT_TYPE
FROM PROJECT p
LEFT OUTER JOIN code c
ON p.PROJECT_ID= c.PROJECT_ID
WHERE p.PROJECT_NAME IN ('test')
ORDER BY min(c.LABEL) ASC
)
WHERE rownum <= 25;
Почему мне это нужно именно так. У меня есть одна таблица PROJECT.
PROJECT_ID PROJECT_NAME PROJECT_TYPE
1 a test1
2 b test2
у меня есть другой код таблицы, который имеет project_id в качестве внешнего ключа.
ID PROJECT_ID LABEL
1 1 a
2 1 b
3 1 c
4 2 d
теперь, когда я присоединюсь к нему на project_id и сделаю заказ на code.label, он даст мне 4 записи, три с идентификатором проекта 1 и 1 с идентификатором проекта 2. Но мое требование - отсортировать проект на основе метки кодов. поэтому логически я хочу две записи. Один для проекта с идентификатором 1 с минимальным значением метки всех возможных комбинаций идентификатора проекта 1, то есть с меткой a, а другой с идентификатором проекта 2. Вот почему я хочу отсортировать его на основе минимальной метки кода. Я не могу использовать group by, так как это снизит производительность.
ORDER BY c.LABEL
? - person Glenn   schedule 10.08.2017