FiRеFоX
V.I.P.
- Регистрация
- 07.08.2010
- Сообщения
- 744
Таблица 1 - это основная таблица, тут юзеры, их пароли и т.д
Таблица 2 - Нууу, предположим, что в этой таблице хранятся даты последних покупок у юзеров.
Таблица 3 - Это уже ВСЕ товары, которые юзеры покупали и в каком количестве (`count`). Например юзер купил чайник - заносится туда, типа чайников он купил 1. Потом он вспомнил, что одного чайника ему не хватит и купил ещё один, тогда увеличиваем параметр count напротив "чайники" на 1. Также и со всеми остальными покупками.
Нужно сделать следующее:
Вывести юзеров из таблицы 1 по каким-либо параметрам, а также вывести инфу из таблицы 2 (например дату последней покупки товара), а также вывести самый "любимый" товар этого юзера(ну тот товар, который он чаще всего покупал - max(), desc - одно и тоже)
Как это выглядит сейчас:
Затем проверка и цикл ($res - это результат из запроса выше):
Ну вот как-то так.. Как избавиться от запроса в цикле?
Попробовал с group by:
Но этот запрос неверно выдает `id_love` (id любимой покупки)
Таблица 2 - Нууу, предположим, что в этой таблице хранятся даты последних покупок у юзеров.
Таблица 3 - Это уже ВСЕ товары, которые юзеры покупали и в каком количестве (`count`). Например юзер купил чайник - заносится туда, типа чайников он купил 1. Потом он вспомнил, что одного чайника ему не хватит и купил ещё один, тогда увеличиваем параметр count напротив "чайники" на 1. Также и со всеми остальными покупками.
Нужно сделать следующее:
Вывести юзеров из таблицы 1 по каким-либо параметрам, а также вывести инфу из таблицы 2 (например дату последней покупки товара), а также вывести самый "любимый" товар этого юзера(ну тот товар, который он чаще всего покупал - max(), desc - одно и тоже)
Как это выглядит сейчас:
Код:
//Первый запрос, выводим нужных юзеров и вытаскиваем дату последней покупки(действий) из таблицы 2
$sql = "SELECT `table1`.`id`, `table1`.`name`, `table2`.`data` FROM `table1`
LEFT JOIN `table2` ON `table1`.`id` = `table2`.`id_user`
WHERE `table1`.`param` = $param AND `table2`.`param` = $param2
ORDER BY NULL
LIMIT 10";
Код:
foreach($res as $value) {
$counts = "SELECT `id`, `count` FROM `table3` WHERE `id_user` = $value['id'] and `id_param` = $param3 ORDER BY `count` DESC LIMIT 1";
}
Попробовал с group by:
Код:
SELECT `table1`.`id`, `table1`.`name`, `table2`.`data`, `table3`.`id` as `id_love`, MAX(`table3`.`count`) FROM `table1`
LEFT JOIN `table2` ON `table1`.`id` = `table2`.`id_user`
LEFT JOIN `table3` ON `table1`.`id` = `table3`.`id_user` AND `table3`.`param` = $param3
WHERE `table1`.`param` = $param AND `table2`.`param` = $param2
GROUP BY `table1`.`id`
ORDER BY NULL
LIMIT 10