|
|
|
| Здравствуйте, подскажите пожалуйста. В базе содержатся года "с" и "по"
Как вывести значение минимум и максимум?
т.е. 1996-2002
1997-2005
1990-2003
вывести 1990 - 2005
значения "с" и "по" содержаться в разных полях, данные выводятся через foreach, т.к. после минимума и максимума нужно вывести весь список в том виде, в котором он записан в базе.
пробовал через min и max, но при таком запросе выводит первую запись, т.е. - 1996-2002 | |
|
|
|
|
|
|
|
для: gofree
(25.09.2014 в 21:50)
| | Никто не знает? Только отдельным запросом к базе? | |
|
|
|
|
|
|
|
для: gOFREe
(01.10.2014 в 13:27)
| | ну для начала бы неплохо задачу объяснить человеческим языком.
ну и дамп структуры БД (что должно быть в первую очередь) | |
|
|
|
|
|
|
|
для: gOFREe
(01.10.2014 в 13:27)
| | >Никто не знает? Только отдельным запросом к базе?
Я бы сказал - никто не понял.
Но все скромно промолчали. | |
|
|
|
|
|
|
|
для: Trianon
(01.10.2014 в 16:13)
| | Наверно некорректно объяснил.
Дамп простой.
with | to
-------------------
1996 | 2002
1997 | 2005
1990 | 2003
--------------------
Вывести сначала минимальный год и максимальный, из данного примера это 1990 - 2005
А далее весь список по порядку.
1996-2002
1997-2005
1990-2003 | |
|
|
|
|
|
|
|
для: gOFREe
(02.10.2014 в 15:40)
| | вообще-то не with ( что означает вместе/совместно с кем/чем-нибудь), а from (что значит от, начиная с )
Значения минимума и максимума выводятся естественным
SELECT MIN(`from`) as `start`, MAX(`from`) as `end`
FROM `tbl`;
|
Значения списка по порядку можно вывести, если задан сам порядок.
Если порядок по началу временного периода, то
SELECT `from`, `to`
FROM `tbl`
ORDER BY `from`;
|
Сразу замечу, что у самой таблицы определенного порядка хранения строк нет.
И как только кто-то говоит, что хочет вывод по порядку, а не абы как, так сразу этот кто-то оказывается вынужден этим порядком озаботиться.
Пытаться получить эти данные одним запросом особого смысла нет.
Если данные в таблице меняются столь внезапно, что результат первого запроса может переставть соответствовать результату второго, то тут можно посоветовать одно из двух.
Либо применять транзакции, либо считать минимум и максиимум на клиентской стороне.
В принципе, чисто теоретически, если эти данные кровь из носу нужны одним запросом, а считать их на клиенте неохота, можно применить модификатор ROLLUP (еще потребуется первичный ключ), только это увеличит нагрузку на сервер, а не уменьшит . И с учетом требования "сперва максимум, минимум , потом сами данные" - увеличит нагрузку кардинально. | |
|
|
|
|
|
|
|
для: Trianon
(02.10.2014 в 16:19)
| | Я такой вариант уже пробовал, он почему то не всегда делает правильный выбор. Заданы конкретные параметры, а выводит как будто с потолка. | |
|
|
|
|
|
|
|
для: gOFREe
(09.10.2014 в 10:57)
| | пример в студию.
С дампом и кодом запроса.
PS. наверняка, Вы не учитываете какую-то собственную ошибку. | |
|
|
|
|
|
|
|
для: Trianon
(09.10.2014 в 17:42)
| | например тип поля varchar пихают повсеместно | |
|
|
|