Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обледенить эти 2 запроса 
:(
    Опции темы
php5
Дата 13.1.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Имеется 2 запроса : 
1-й
Код

SELECT ifnull((select FROM_UNIXTIME(bo.date_enter,'%d.%m.%Y') 
FROM bonus bo where bo.id_user=us.id_user AND bo.id_bonus_name=1 
ORDER BY bo.date_enter DESC  LIMIT 1),DATE_FORMAT(us.date_first_p,'%d.%m.%Y')) as lastdate  
FROM user us  WHERE  us.date_activ is not NULL;

Который из  таблицы  user для каждого  пользователя возвращает   дату  последнего  начисления бонуса  (бонус начисляется рас в год )

2-й
Код

SELECT  id_user,CONCAT(fname,' ',iname,' ',oname) as fullname ,num_dog , lastdate_?
FROM user WHERE IF (366 - DAYOFYEAR('2009-01-13') > 1,(DAYOFYEAR(lastdate_?) - DAYOFYEAR('2009-01-13') < 1) 
AND (DAYOFYEAR(lastdate_?) - DAYOFYEAR('2009-01-13') >= 0),((DAYOFYEAR(lastdate_?) - DAYOFYEAR('2009-01-13') < 1) 
AND (DAYOFYEAR(lastdate_?) - DAYOFYEAR('2009-01-13') >= 0)) OR ((366 - DAYOFYEAR(lastdate_?) - DAYOFYEAR('2009-01-13') < 1) 
AND (366 - DAYOFYEAR(lastdate_?) - DAYOFYEAR('2009-01-13') >= 0)))

Данный запрос   возвращает  информацию о клиентах  которым  нужно начислить бонус если  lastdate_? ==  01-13 (год отбрасываем)  
Так  вот как вместо   lastdate_?    подставлять дату из 1-го запроса  т.е  lastdate


Это сообщение отредактировал(а) php5 - 13.1.2009, 20:30
PM MAIL   Вверх
php5
Дата 14.1.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Как один из вариантов решение пришло в голову использовать таблицу представления 
Код

CREATE VIEW user_p AS
SELECT us.id_user,CONCAT(us.fname,' ',us.iname,' ',us.oname) as fullname ,
us.num_dog,DATE_FORMAT(us.date_first_p,'%Y-%m-%d') as firstdate, 
ifnull((select FROM_UNIXTIME(bo.date_enter,'%Y-%m-%d') FROM bonus bo where bo.id_user=us.id_user AND bo.id_bonus_name=1 ORDER BY bo.date_enter desc  LIMIT 1),DATE_FORMAT(us.date_first_p,'%Y-%m-%d')) as lastdate 
FROM user us  WHERE  us.date_activ is not NULL;

SELECT  id_user, fullname ,num_dog, firstdate,lastdate
FROM user_p  WHERE IF (366 - DAYOFYEAR('2008-01-13') > 110,(DAYOFYEAR(lastdate) - DAYOFYEAR('2008-01-13') < 110) 
AND (DAYOFYEAR(lastdate) - DAYOFYEAR('2008-01-13') >= 0),((DAYOFYEAR(lastdate) - DAYOFYEAR('2008-01-13') < 110) 
AND (DAYOFYEAR(lastdate) - DAYOFYEAR('2008-01-13') >= 0)) OR ((366 - DAYOFYEAR(lastdate) - DAYOFYEAR('2008-01-13') < 110) 
AND (366 - DAYOFYEAR(lastdate) - DAYOFYEAR('2008-01-13') >= 0)));


Это сообщение отредактировал(а) skyboy - 14.1.2009, 16:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.