![]() |
Выборка данных из mysql и сортировка на php
Например при размещении объяаления о товаре, автор указывает время до которого это объявление действительно, у меня это так две формы первая марка, вторая страна производитель и к ним есть три формы первая день, вторая месяц и третья год
выборка осуществляется по марке и по стране производителю и вот хорошо бы потом когда данные полученны сортировать их по дате до которого действительно объявление т.е. например чтобы список начинался с тех объяалений, у которых время подходит вот, вот за ним идут те у которых побольше времени в запасе, скажите пожалуйста как это осуществить? Заранее спасибо. |
Допустим, таблица my_table такая:
[ id | mark | proizv | data ] Пишем "SELECT * FROM `my_table` WHERE `mark`='Gnusmas' ORDER BY `data` ASC"; Выбираем все строки из таблицы my_table, где марка - Гнусмас и упорядочиваем по дате средствами СУБД. Вместо ASC можно написать DESC, тогда в обратном порядке будет упорядочиваться. |
по дате это понятно, только есть дата которая возникает от timestamp и есть дата которую заносят в таблицу из полей день, месяц, год сортировку надо по этим полям например переменные $d $m $g и потом при получении данных из базы сделать так чтобы они не по дате размещения сортировались, но по переменным $d $m $g и первыми выводились данные у которых $d $m $g самые меньшие значения, за ними те у которых они побольше чем у первых но меньше чем у третьих, за ними третьи у которых значение больше чем у вторых но меньше чем у четвертых и т.д.
|
Какая разница по какому полю сортировать?
Можно и так: "SELECT * FROM `my_table` WHERE `mark`='Gnusmas' ORDER BY `g` ASC, `m` ASC, `d` ASC"; Сначала идёт сортировка по годам, если годы совпадают, то по месяцам. Если и месяцы совпадают, то по дням. По идее, здесь будет примерно такая последовательность: [год | месяц | день ] 2008 | 08 | 02 2008 | 08 | 14 2008 | 09 | 05 2008 | 09 | 13 2008 | 12 | 30 2009 | 01 | 05 и т.д. |
Спасибо
|
Время: 00:04. |
Время: 00:04.
© OSzone.net 2001-