Сейчас речь пойте о MySQL.
Мне нужно сделать сложную выборку. А я не знаю к чему подступится.
Есть база заказов. Их порядка 5000.
В ней есть поле "дата сдачи заказа". Формат даты там Unix.
Задача:
Нужно извлечь все записи из БД в следующем порядке по дате сдачи:
1) Просроченные
2) Сегодня
3) Завтра
4) Послезавтра
5) Еще дальше чем послезавтра(кол-во дней)
6) Сданные
Т.е. сначала должны отображаться все просроченные, после, те что нужно сдать сегодня, потом те что завтра и т.д. по списку выше.
Я вот, даже не знаю возможно ли это сделать одним запросом или нет.
Подскажите куда копать. Спасибо!
Спустя 3 минуты, 47 секунд (1.03.2011 - 12:32) Snus написал(а):
ApuktaChehov
Быстрее и правильнее будет делать отдельными запросами.
Быстрее и правильнее будет делать отдельными запросами.
Спустя 7 минут, 4 секунды (1.03.2011 - 12:39) linker написал(а):
Можно.
Спустя 40 секунд (1.03.2011 - 12:40) ApuktaChehov написал(а):
linker - а направление укажите?
Спустя 4 минуты, 59 секунд (1.03.2011 - 12:45) linker написал(а):
Давай больше данных. Как ты определяешь сдан проект или нет?
Спустя 7 минут, 1 секунда (1.03.2011 - 12:52) ApuktaChehov написал(а):
В таблице есть поле status, которое может принимать значение "сдан".
Спустя 15 минут, 47 секунд (1.03.2011 - 13:08) ApuktaChehov написал(а):
Я, кажется уже сам допер как сделать. Сделал вложенными запросами с UNION.
Работает как надо. Но я все же хотел бы увидеть и другие решения, если они есть. Может мой вариант не самый оптимальный.
Работает как надо. Но я все же хотел бы увидеть и другие решения, если они есть. Может мой вариант не самый оптимальный.
Спустя 53 минуты, 53 секунды (1.03.2011 - 14:02) ApuktaChehov написал(а):
Вот и косяк.
Не работает сортировка при использовании UNION
Беда прямо.
Не работает сортировка при использовании UNION
Беда прямо.
Спустя 16 минут, 24 секунды (1.03.2011 - 14:18) ApuktaChehov написал(а):
Аха. Решил эту проблему: оказывается оператор LIMIT нужно было занести в каждый вложенный запрос. А я его применял ко всему результату.
Продолжаю работать...
Продолжаю работать...
Спустя 1 час, 9 минут, 8 секунд (1.03.2011 - 15:27) Diakon написал(а):
ApuktaChehov сложно вам помоч не имея представления о структуре вашей БД.
Скажите сколько таблиц в БД и какие названия поля
В простом варианте, если все данные находятся в одной таблице (однако если это так и у вас 5000 позиций то у вас, скорее всего, все это адцки тормозит) то запрос можно написать такого вида
SELECT * FROM `НАЗВАНИЕ ТАБЛИЦЫ` WHERE status="сдан" ORDER BY data
тут data - поле с датой, а status - поле со статусом
Так же делаете запросы для всех других статусов и запихиваете результаты выборки в соответствующие масивы
Скажите сколько таблиц в БД и какие названия поля
В простом варианте, если все данные находятся в одной таблице (однако если это так и у вас 5000 позиций то у вас, скорее всего, все это адцки тормозит) то запрос можно написать такого вида
SELECT * FROM `НАЗВАНИЕ ТАБЛИЦЫ` WHERE status="сдан" ORDER BY data
тут data - поле с датой, а status - поле со статусом
Так же делаете запросы для всех других статусов и запихиваете результаты выборки в соответствующие масивы
Спустя 13 минут, 41 секунда (1.03.2011 - 15:41) ApuktaChehov написал(а):
Diakon - не, ничего не тормозит все быстро.
Я уже решил проблему, спасибо всем откликнувшимся.
Я уже решил проблему, спасибо всем откликнувшимся.
_____________