Помогите с запросом.

Dimas-5

Есть таблицы заказов и покупателей со следующим описанием:#покупателиCREATE TABLE CUSTOMERS (CUSTOMER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,CUSTOMER_NAME VARCHAR(255),CUSTOMER_ADDRESS VARCHAR(255),PRIMARY KEY(CUSTOMER_ID))#заказыCREATE TABLE ORDERS (ORDER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,CUSTOMER_ID INT UNSIGNED NOT NULL,ORDER_DATE DATETIME NOT NULL,PRIMARY KEY(ORDER_ID))Нужно написать запрос, выводящий имя и адрес заказчиков, которые сделали больше 3 заказов в течение последних двух недель, не считая текущий день.Вот что у меня получилось:$result=mysql_query('SELECT `CUSTOMERS`.`CUSTOMER_NAME`, `CUSTOMERS`.`CUSTOMER_ADDRESS`, count(`ORDERS`.`ORDER_ID`) FROM `CUSTOMERS`, `ORDERS` WHERE `CUSTOMERS`.`CUSTOMER_ID`=`ORDERS`.`CUSTOMER_ID` and TO_DAYS(NOW()) - TO_DAYS(`ORDERS`.`ORDER_DATE`) >= 14 GROUP BY `CUSTOMERS`.`CUSTOMER_NAME`, `CUSTOMERS`.`CUSTOMER_ADDRESS` HAVING COUNT(`ORDERS`.`ORDER_ID`)>3')or die(mysql_error());Но почему то белое поле... не могу понять почему... HELP
13 ответов

Dimas-5

>= 14
<= 14и ты никак не учитываеш это
не считая текущий день


Dimas-5

qwerty112, есть такое... но вот дальше после этого условия, как то не выдает ничего...


Dimas-5

qwerty112, есть такое... но вот дальше после этого условия, как то не выдает ничего...
что есть ? ты знак поменял ?


Dimas-5

qwerty112, поменял, я прописал разные даты...там и больше и меньше все равно должна выборка срабатывать... сам синтаксис c GROUP BY правильно написан?


Dimas-5

INSERT INTO `ORDERS` (`ORDER_ID`, `CUSTOMER_ID`, `ORDER_DATE`) VALUES (8, 2, '2012-05-03 11:00:10'), (2, 2, '2012-05-01 10:59:13'), (3, 2, '2012-05-01 10:15:48'), (4, 2, '2012-05-02 11:00:10'), (7, 2, '2012-05-05 09:20:48'), (9, 2, '2012-05-04 11:00:10');Вот такие даты стоят...


Dimas-5

TO_DAYS(NOW()) - TO_DAYS(`ORDERS`.`ORDER_DATE`)
`ORDERS`.`ORDER_DATE` between date_add(now(),-14 day) and date_add(now(),-1 day)
хоть длиннее, но имхо и нагляднее, и индекс в случае чего подхватится >сам синтаксис c GROUP BY правильно написан?Правильно. Удивительно, но в кои-то веки в этой теме появился человек, с первого раза написавший правильную группировку :)


Dimas-5

в этой теме в этом подфоруме, конечно же.


Dimas-5

qwerty112, поменял, я прописал разные даты...там и больше и меньше все равно должна выборка срабатывать... сам синтаксис c GROUP BY правильно написан?
> сам синтаксис c GROUP BY правильно написан?[/да> должна выборка срабатыватьгде ты проверяеш ? в своём поделии ?в каком-нибудь МуСКЛ-клиенте (пхпМуАдмин, например) проверьпример данных покажи на котором "не работатет",попробуй без условия в HAVING - может у тебя нет таких, которые прибарахлились больше 3-х раз ?


Dimas-5

[/src][/s]
`ORDERS`.`ORDER_DATE` between date_add(now(),-14 day) and date_add(now(),-1 day)
хоть длиннее, но имхо и нагляднее, и индекс в случае чего подхватится
+1


Dimas-5

Хм... в phpmyadmin запрос сработал ...что тут не так то ? 3')or die(mysql_error());$myrow = mysql_fetch_array ($result);if($myrow = mysql_fetch_array ($result)){ echo '

Имя заказчика : '.$myrow['CUSTOMER_NAME'].'. Адрес заказчика : '.$myrow['CUSTOMER_ADDRESS'].'

';}else{ echo '

Записей нет

';}?>


Dimas-5

что тут не так то ?
$myrow = mysql_fetch_array ($result);
if($myrow = mysql_fetch_array ($result)){
 echo <tralala>
else{
 echo '<p>Записей нет</p>';
}
я, конечно, в пхп не силён, но где тут цикл для вывода записей? два раза фетч записи... и всё. в пхзпмайадмине запрос что-нибудь выводил или просто выполнился без ошибок и результатов?ЗЫ. use the [ src ], Luke!


Dimas-5

Dimas-5,это уже вопрос не этого форумано, имхо, вот первый$myrow = mysql_fetch_array ($result);лишний


Dimas-5

qwerty112, tanglir , благодарю друзья!