|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
Подскажтите, пожалуйста как сформировать запрос. в таблице есть код товара (может повторятся), дата поступления (может повторятся), цена (может повторятся) и еще несколько характеристик товара. нужно для КАЖДОГО кода найти строку: с максимальной датой (их может быть несколько), и из этих нескольких строк отобрать ту у которой цена максимальна. И нужно получить строку с этими данными + характиристики товара, которые соответствуют данной строке. Заранее благодарна. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 16:27 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
слабо нарисовать табличку источник и табличку результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 16:45 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
прошелмимослабо нарисовать табличку источник и табличку результат?"Прокачай телепатию, салага" (с) ithappens Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 17:21 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
прошелмимо, пожалуйста: исх табл. kod date cena kod_post kod_kart 1 10.10.2009 100 3 10 2 12.10.2010 800 1 2 3 20.01.2010 300 3 4 1 12.10.2010 90 10 20 1 05.12.2009 200 2 2 3 21.01.2010 50 1 20 2 01.01.2009 10 10 30 2 12.10.2010 800 3 20 4 18.01.2009 200 5 10 1 12.10.2010 80 4 8 ожидаемый результат: kod date cena kod_post kod_kart 1 12.10.2010 90 10 20 2 12.10.2010 800 3 20 3 21.01.2010 50 1 20 4 18.01.2009 200 5 10 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 17:24 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
_Margo_прошелмимо, пожалуйста: исх табл. kod date cena kod_post kod_kart 1 10.10.2009 100 3 10 2 12.10.2010 800 1 2 3 20.01.2010 300 3 4 1 12.10.2010 90 10 20 1 05.12.2009 200 2 2 3 21.01.2010 50 1 20 2 01.01.2009 10 10 30 2 12.10.2010 800 3 20 4 18.01.2009 200 5 10 1 12.10.2010 80 4 8 ожидаемый результат: kod date cena kod_post kod_kart 1 12.10.2010 90 10 20 2 12.10.2010 800 3 20 3 21.01.2010 50 1 20 4 18.01.2009 200 5 10 чтобы было понятнее телепатам есть спец.тэги, которыми нужно пользоваться исх табл. koddatecenakod_postkod_kart110.10.2009100310 ок, телепаты пусть дальше покачают мозг ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 17:33 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
_Margo_ожидаемый результат: kod date cena kod_post kod_kart 1 12.10.2010 90 10 20 2 12.10.2010 800 3 20 3 21.01.2010 50 1 20 4 18.01.2009 200 5 10 Здесь, похоже, первая строка не имеет место быть по условиям задачи. Код запроса может быть таким: select kod, dmax, mprice, kod_post. kod_kart ; FROM ; (select kod, max(date) dmax, MAX(cena) as mprice, kod_post. kod_kart ; from table1 ; group by 1) t1 ; GROUP BY 3 В полученном запросе последняя строка - та, что надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 17:45 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
igorbikЗдесь, похоже, первая строка не имеет место быть по условиям задачиА по-моему, всё верно. igorbikselect kod, dmax, mprice, kod_post. kod_kart ; FROM ; (select kod, max(date) dmax, MAX(cena) as mprice, kod_post. kod_kart ; from table1 ; group by 1) t1 ; GROUP BY 3Позвольте не согласиться. На таких данных koddatecena12000-01-01150012001-01-0110012001-01-01200Ваш запрос вернёт 12001-01-011500По-моему, это совсем не то, что нужно ТС. Как я понял, должно получиться 12001-01-01200 ЗЫ. Кстати, ваш запрос вообще не гарантирует одинаковых результатов при повторных запусках, да и работать будет только под MySQL. Такой групбай (тот, что снаружи у вас) - русская рулетка. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 18:17 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
Хех, да и внутренний групбай из той же оперы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 18:19 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
_Margo_нужно для КАЖДОГО кода найти строку: с максимальной датой (их может быть несколько), и из этих нескольких строк отобрать ту у которой цена максимальна. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 18:28 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
tanglirХех, да и внутренний групбай из той же оперы. Мне так долго пришлось пахать на 5-6-версиях Фокса, что привычка сокращать GROUP BY въелась настолько, что мне проще прописать SET ENGINE 70, чем следить за синтаксисом 9-ки. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 18:33 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
igorbik_Margo_нужно для КАЖДОГО кода найти строку: с максимальной датой (их может быть несколько), и из этих нескольких строк отобрать ту у которой цена максимальна.Вот именно. А ваш запрос выберет код, максимальную дату по коду(из всех строк с таким кодом) и максимальную цену по коду(из всех строк с таким кодом). И где гарантия, что макс. дата и макс. код будут в одной и той же строке? Нетути её, я даже пример выложил в 8652855. Поэтому либо мой вариант, либо предлагайте свой, но рабочий :) PS. про set engine 70 - да, забыл, но это отнюдь не отменяет вышесказанного. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 18:46 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
tanglir, Ну вот, не разобрался до конца в условии задачи. Так что код из 8652385 работает корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2010, 19:48 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
Спасибо всем, кто отозвался на мой вопрос! Только вот куда теперь вставить tbl.t1,tbl.t2 (нужно вывести не только код, дату и цену, но и дополнительные характеристики, находящиеся в найденной строке). Если вставлять их в первый или второй select - нужно будет их включать и в group by, что сразу же испортит картину. tanglir , твой код работает отлично, но вот куда вписать теперь эти дополнительные характеристики? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2010, 09:26 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
_Margo_, идея та же, что и раньше ;) select tbl.всё_что_надо from tbl inner join (мой_запрос) t1 on tbl.kod=t1.kod and tbl.data=t1.data and tbl.cena=t1.cena ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2010, 10:29 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
tanglir, Огромное-огромное спасибо! В общем оборачивать select в select как в обертку :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2010, 11:51 |
|
Запрос на два максимума
|
|||
---|---|---|---|
#18+
_Margo_, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2010, 15:19 |
|
|
start [/forum/topic.php?fid=41&msg=36586079&tid=1585384]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
97ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 202ms |
0 / 0 |