|
|
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Есть таблица цен товаров: price id post item и значений цен: price_val id parent date value нужно для каждого price.item выбрать одну строку с min(price_val.value), price.id=price_val.parent, price_val.date > "20.11.02", price_val.value>0 создать таблицу: price.item, price_val.value, price_val.date, price.post делаю: select price.item, price_val.value, price_val.date, price.post from price left join period on price.id=price_val.parent where price_val.date > '20.11.02' and price_val.value = ( select min(price_val1.value) from price price1, price_val price_val1 where price1.id=price_val1.parent and price_val1.date > '20.11.02' and price_val1.value >0 and price1.item=price.item ) order by price.item получается по несколько строк на каждый item, когда за разные date и post были одинаковые value Как изменить запрос так, чтобы для каждого item возвращалась только одна строка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 13:59:47 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Есть такой оператор distinct ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:06:09 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
select distinct - результат тотже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:17:37 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
примерно так: select price.item, (SELECT TOP 1 price_val.value WHERE price_val.date > '20.11.02' AND price_val.item = price.item ORDER BY price_val.value) AS price_v, (SELECT TOP 1 price_val.date WHERE price_val.date > '20.11.02' AND price_val.item = price.item ORDER BY price_val.value) AS price_date FROM price ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:18:22 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Лучше сразу использовать GROUP - явно скоро агрегирующие придется применять! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:21:20 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Был вариант select price.item, min(price_val.value), max(price_val.date), max(price.post) from price,price_val where price_val.date > '20.11.02' and price.id=price_val.parent and price_val.value >0 group by price.item но - результат неверный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 14:37:09 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
а что такое post ну привели бы скрипты таблиц и примерных данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 20:07:47 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2002, 20:55:19 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2002, 00:22:31 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Получилось следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. результат верный. Вопрос - вложенные запросы - одинаковые, как сделать тоже, используя один вложенный запрос? Что - то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Возможно ли такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2002, 18:47:03 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
1. Why you don't want use my query ? Maybe because it use ordering by date not by price ? If it's the point, so here you are "another" variant Код: plaintext 1. 2. 3. 4. Возможно ли такое? 2.No ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2002, 21:24:39 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
2 Glory такой вариант не подходит. Фильтрация будет до уровня price.id, а нужно до price.item. На каждый price.item может быть несколько записей с разными price.post - поставщиками. price price_val id item post id parent date value 1 t1 p1 1 1 21.11.02 100 2 t1 p2 2 1 22.11.02 102 3 t1 p3 3 2 21.11.02 99 4 t2 p1 4 3 20.11.02 103 5 t2 p4 5 3 23.11.02 101 6 t3 p2 6 4 21.11.02 54 7 t4 p1 7 4 22.11.02 57 8 t4 p2 8 4 24.11.02 56 9 t5 p1 9 5 22.11.02 55 10 t5 p3 10 5 23.11.02 53 результат должен быть такой: t1 21.11.11 100 p1 t2 23.11.11 53 p4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 16:55:37 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. но это все равно не эффективно... на больших данных группировка работает намного быстрее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 17:29:21 |
|
||
|
Поиск минимального значения
|
|||
|---|---|---|---|
|
#18+
2 Mice - был такой вариант - результата так и не дождался. Вот через where: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. работает быстро и правильно... но некрасиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 20:05:56 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3364&tid=1818303]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 306ms |

| 0 / 0 |
