SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.08.2012 14:12:19

nekulin
Завсегдатай
Зарегистрирован: 06.04.2012
Сообщений: 56

ORDER BY + JOIN + WEEK (проблема)

Всем привет!
Есть запрос с join - ами и есть сортировка


                IF( p.is_confrim=0, 0, 1 ),
                IF( week(NOW())-week(p.date_cr)<3, 0, 1),
                suma_tovar ASC
 

проблеме в том что я получаю каждый раз разные записи если указать сортировку

                IF( week(NOW())-week(p.date_cr)<3, 0, 1)
 

Данные не динамические, но содержит NULL т.е
1) p.date_cr - может содержать дату
2) p.date_cr - может содержать NULL (т.е нет записей)

Возможно нужно сделать 2 запроса чтоб получилось что требуется:
Нужно вывести все записи, при этом:
а) на первое место вывести где p.is_confrim = 0
б) то что получилось в а) отсортировать по week(NOW())-week(p.date_cr), где меньше 3 недель

Неактивен

 

#2 17.08.2012 22:28:01

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ORDER BY + JOIN + WEEK (проблема)

Ваша сортировка не полностью определяет порядок, так как будут записи, у которых оба критерия а и б совпадут, их относительный порядок будет произволен. Для детерминистичности нужно добавить в конец какую-нибудь уникальную сортировку, например date_cr DESC

Неактивен

 

#3 18.08.2012 11:17:33

nekulin
Завсегдатай
Зарегистрирован: 06.04.2012
Сообщений: 56

Re: ORDER BY + JOIN + WEEK (проблема)

Тоесть если указать сортировку где  а и б будут одинаковы, то мы получим каждый раз разные записи?
Спасибо!

Неактивен

 

#4 18.08.2012 11:21:16

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ORDER BY + JOIN + WEEK (проблема)

nekulin написал:

Тоесть если указать сортировку где  а и б будут одинаковы, то мы получим каждый раз разные записи?
Спасибо!

Одинаковые по критериям сортировки записи, MySQL вправе выдавать в произвольном относительном порядке. Это выглядит как переодическая перестановка строк.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson