Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Топ: Небольшие вопросы по MySQL
Сообщения
Orel

ofroke, спасибо, помогло, вот только я непонял Зачем GROUP BY .

20 Дек 2010, 14:35
Astaker

1375, знаю, просто спросили что это за функция и я ответил...

20 Дек 2010, 15:40
Orel

Помогите оптимизировать запрос.
Проблема в том что в подзапросах использование AS `name_pole` не даёт результата.
Ключами массива становиться подзапросы, но значение правильные.
array(
[(SELECT COUNT(`id`) FROM `stat` WHERE `id`)] => 313 ,
... т.д
)
Правильные ключи становяться в массиве после вот токого не оптимизированного кода (SELECT COUNT(`id`)....) AS `name_pole`

SELECT COUNT(`id`) AS `sms_todey`,SUM(`reward`) AS `sum_today`
,(SELECT COUNT(`id`) FROM `stat` WHERE `id`) AS `sms_total`

,(SELECT COUNT(`id`) FROM `stat` WHERE `time`>=? AND `time`<=?) AS `sms_lastday`
,(SELECT SUM(`reward`) FROM `stat` WHERE `time`>=? AND `time`<=?) AS `sum_lastday`
,(SELECT COUNT(`id`) FROM `stat` WHERE `time`>=?) AS `sms_week`
,(SELECT SUM(`reward`) FROM `stat` WHERE `time`>=?) AS `sum_week`
,(SELECT SUM(`reward`) FROM `stat` WHERE `id`) AS `sum_total`

,(SELECT SUM(`sum`)-SUM(`reward`) FROM `stat` WHERE `time`>=?) AS `profit_today`
,(SELECT SUM(`sum`)-SUM(`reward`) FROM `stat` WHERE `time`>=? AND `time`<=?) AS `profit_lastday`
,(SELECT SUM(`sum`)-SUM(`reward`) FROM `stat` WHERE `time`>=?) AS `profit_week`
,(SELECT SUM(`sum`)-SUM(`reward`) FROM `stat` WHERE `id`) AS `profit_total`

FROM `stat` WHERE `time`>=?

20 Дек 2010, 20:27
ofroke

1381. Orel(Off) Жал|Отв
03:35:35 20.12.10
ofroke, спасибо, помогло, вот только я непонял Зачем GROUP BY .
===
ты же сказал, чтобы неповторялись повторные записи)

21 Дек 2010, 2:55
ofroke

left join `#_base_ip` as `baseip` on (`logs`.`ip` between `baseip`.`min` AND `baseip`.`max`)
у меня сравнивает все диапазоны, а надо только 1, тоесть как лимит 1 присобачить?
просто еще ниже у меня идет продолжение запроса..

22 Дек 2010, 11:58
Fashion

ofroke, ну так показывай весь запрос

22 Дек 2010, 12:16
ofroke

select
`logs`.*, `base`.`name`, `base`.`strana`
from `#_logs` as `logs`
left join `#_base_ip` as `baseip` on (`logs`.`ip` between `baseip`.`min` and `baseip`.`max` )
left join `#_base_oper` as `base` on (`baseip`.`oper` = `base`.`id`)
where `logs`.`link_id`='".$autorize['id']."' and `logs`.`data` > ".$statday." and `logs`.`data` <= ".$sday." ".$qsite." order by `logs`.`data` desc
limit 0, 20
вот такая вот


__________
посл.ред. 22 Дек 2010, 12:21; всего 1 раз 22 Дек 2010, 12:18
ofroke

#_ - заменяет префикс
".$qsite." - `site` = '2'

22 Дек 2010, 12:19
Fashion

ofroke,
ALTER TABLE `table_ip` ADD UNIQUE (`min`);
ALTER TABLE `table_ip` ADD UNIQUE (`max`);

Если не прокатит, то база ip у тя корявая. удаляй дубликаты

22 Дек 2010, 12:26
ofroke

ответ #1062 - Duplicate entry '1358598144' for key 2

22 Дек 2010, 12:29
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.