|
Выборка из таблицы с первичным ключем из двух полей
|
|||
---|---|---|---|
#18+
Задача в следующая, есть таблица: Id1 Id2 Qty 1 1 10 1 2 10 1 3 20 2 1 20 2 2 20 2 3 30 3 1 40 3 2 50 Поля id1, id2 составляют первичный ключ. Следует написать один запрос (т.е. без предварительных запросов, сохраняющих данные где-нибудь в переменных или временных таблицах, без циклов и проч.) , возвращающий по одной записи для каждого значения id1, встречающегося в исходной таблице, при этом, если в исходной таблице есть несколько строк с таким значением id1, то возвращается строка с минимальным для этого значения id1 значением поля Qty. Если таких строк для данного id1 будет несколько, годится любая из них. Мне на ум пришло только такое решение: select t.id1, max (t_.id2) , t.qty from (select id1, min(qty) qty from test_table group by id1) t inner join test_table t_ on (t.id1 = t_.id1 and t.qty = t_.qty) group by t.id1, t.qty Является ли данное решение верным? Ну тоесть результат верный, но можно ли сказать, что я не использую предварительных запросов? Верные результаты для приведенной таблицы? Id1 Id2 Qty 1 1 10 2 1 20 3 1 40 Id1 Id2 Qty 1 2 10 2 1 20 3 1 40 Id1 Id2 Qty 1 1 10 2 2 20 3 1 40 Id1 Id2 Qty 1 2 10 2 2 20 3 1 40 Модератор: Предупреждение за кросс-пост. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2014, 15:10 |
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
Не усложняй сверх необходимого. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2014, 16:46 |
|
|
start [/forum/topic.php?fid=54&fpage=13&tid=2008795]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 413ms |
0 / 0 |