|
|
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#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:09:54 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Чем не устраивает Код: sql 1. 2. 3. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:20:22 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
лабораторные работы нужно делать самостоятельно Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:24:49 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Тупанул, такой запрос будет ту же выборку делать. Но меня смущает следующее, пусть id1 – это код товара, id2 – код партии товара, Qty – остаток на складе. Запрос должен выбрать по одной партии каждого товара с наименьшим остатком, тогда я, практически явно задаю, что код партии будет максимальным при минимальном остатке, а этого делать не нужно. Тоесть нужно задать в условии, что остаток должен быть минимальным и все, потом для каждого товара выбрать партию с минимальным остатком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:32:28 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийлабораторные работы нужно делать самостоятельно Дяденька, мне 25 лет, я Вам паспорт могу показать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:34:30 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_MagisterТоесть нужно задать в условии, что остаток должен быть минимальным и все, потом для каждого товара выбрать партию с минимальным остатком Код: sql 1. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:42:36 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAftor_MagisterТоесть нужно задать в условии, что остаток должен быть минимальным и все, потом для каждого товара выбрать партию с минимальным остатком Код: sql 1. Это вообще не работает, видимо нужно подключать библиотеку для first_value ... over. Задача должна решаться стандартными средствами T-SQL Но кроме как так: select id1, max(id2), min(qty) qty from test_table group by id1 не выходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:50:00 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_MagisterЗадача должна решаться стандартными средствами T-SQL ты форумом ошибся, тебе в mssql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:53:16 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_Magister, в firebird'е ты не сможешь решить задачу "стандартными средствами T-SQL", т.к. T-SQL в нём нету для first_value ... over не нужно подключать никакую библиотеку, да и не получится это, DS как обычно пошутил применив конструкцию из FB 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:55:31 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисAftor_Magister, в firebird'е ты не сможешь решить задачу "стандартными средствами T-SQL", т.к. T-SQL в нём нету для first_value ... over не нужно подключать никакую библиотеку, да и не получится это, DS как обычно пошутил применив конструкцию из FB 3 А если средствами SQL? Можно ее решить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:57:31 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Ну не выходя за рамки join`ов, where`ов и having`ов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 15:58:37 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
И еще в условии задачи написано, что возможны разные варианты решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:00:55 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_Magisterв условии задачи написано И ты всё ещё утверждаешь, что это не лабораторная?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:14:56 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAftor_Magisterв условии задачи написано И ты всё ещё утверждаешь, что это не лабораторная?.. именно, разве задача может быть только лабораторной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:18:10 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_MagisterИ еще в условии задачи написано, что возможны разные варианты решения Если я нигде не ошибся то вот еще один вариант читая вот это Aftor_MagisterТоесть нужно задать в условии, что остаток должен быть минимальным и все, потом для каждого товара выбрать партию с минимальным остатком приходим к выводу что есть справочник товаров и следовательно можно использовать его ну и получим что-то вроде вот этого Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:22:36 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Граур СтаниславЧем не устраивает Код: sql 1. 2. 3. ? Такой вариант не верный, ибо в таком случае выборки из таблицы Id1 Id2 Qty 3 1 40 3 2 50 Результат будет Id1 Id2 Qty 3 2 40 Вариант, который был в первом посте: 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 работает верно, но не противоречит ли он вот этому: " Следует написать один запрос (т.е. без предварительных запросов, сохраняющих данные где-нибудь в переменных или временных таблицах, без циклов и проч.) "? И можно ли избавиться от max (t_.id2) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:24:35 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_Magisterразве задача может быть только лабораторной? Такая задача с такой формулировкой - да. В реальных задачах применяют PSQL и не парятся с чистотой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:26:20 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAftor_Magisterразве задача может быть только лабораторной? Такая задача с такой формулировкой - да. В реальных задачах применяют PSQL и не парятся с чистотой. Оу, ну да, я же забыл, что Вам виднее где я взял задачу, тогда конечно да, сто пудей лабораторная. Лучше бы предложили свои варианты решения (я ведь привел решение в первом посте и спросил, насколько оно соответствует поставленному условию выполнения). Так что нечего разводить срач и писать не по делу, засоряя топик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:32:24 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
2 года прошло. а мальчику всё неймётся. Помогите составить выборку Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:33:31 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_Magisterможно ли избавиться от max (t.id2)? Можно заменить его на min(t.id2). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:36:01 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Aftor_Magister, этому условию "Следует написать один запрос (т.е. без предварительных запросов, сохраняющих данные где-нибудь в переменных или временных таблицах, без циклов и проч.)" твой запрос удовлетворяет. Правильно ли он работает и решает ли поставленную задачу не знаю. Думать лень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:37:10 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисAftor_Magister, этому условию "Следует написать один запрос (т.е. без предварительных запросов, сохраняющих данные где-нибудь в переменных или временных таблицах, без циклов и проч.)" твой запрос удовлетворяет. Правильно ли он работает и решает ли поставленную задачу не знаю. Думать лень Вот этот? 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 спасибо за дельный ответ, этот запрос делает правильную выборку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:44:13 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAftor_Magisterможно ли избавиться от max (t.id2)? Можно заменить его на min(t.id2). Это просто гениальный ответ, высший пилотаж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:45:27 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий2 года прошло. а мальчику всё неймётся. Помогите составить выборку Ну да. При этом ни там, ни здесь полезным ты не отказался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:47:02 |
|
||
|
Выборка из таблицы с первичным ключем из двух полей
|
|||
|---|---|---|---|
|
#18+
Hello, Aftor_magister! You wrote on 15 мая 2014 г. 16:51:01: Aftor_magister> Ну да. При этом ни там, ни здесь полезным ты не отказался. артёмка, шел бы ты аццедова. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2014, 16:52:22 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38642488&tid=1563597]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 346ms |

| 0 / 0 |
