FiRеFоX
V.I.P.
- Регистрация
- 07.08.2010
- Сообщения
- 744
Две таблицы, одна основная - магазин(id,name,opisanie и т.д). Другая содержит id купленных вещей юзерами из первой основной таблицы.
Нужно вывести на страницу все товары, кроме тех, которые купил пользователь.
Попробовал использовать "left join" [см ниже]
Этот вариант выводит всё подряд:
На выходе получаю поле "id_tovar" - какое-то число, значит куплено. Или NULL если пользователь не покупал этот товар. Решил добавить where, но он вообще ничего не выводит:
Вопрос можно решить конечно как-то так:
Взять все id, которые купил пользователь [запрос 1]
Вывести на страницу все товары из основной таблицы, но добавить условие "not in()", в котором будут содержаться id из первого запроса.
Но это лишний запрос, лишний код и вообще мне этот вариант не нравится.
Нужно вывести на страницу все товары, кроме тех, которые купил пользователь.
Попробовал использовать "left join" [см ниже]
Этот вариант выводит всё подряд:
Код:
select `shop`.`name`, `us`.`id_tovar`
from `shop`
left join `user_shop` as `us`
on `shop`.`id` = `us`.`id_tovar` and `us`.`id_login` = 1
Код:
select `shop`.`name`, `us`.`id_tovar`
from `shop`
left join `user_shop` as `us`
on `shop`.`id` = `us`.`id_tovar` and `us`.`id_login` = 1
where
`us`.`id_tovar` = NULL
Взять все id, которые купил пользователь [запрос 1]
Вывести на страницу все товары из основной таблицы, но добавить условие "not in()", в котором будут содержаться id из первого запроса.
Но это лишний запрос, лишний код и вообще мне этот вариант не нравится.