#mysql
#mysql
Вопрос:
У меня есть 2 таблицы с именами products и movedprod. первичный ключ продуктов — это внешний ключ для таблицы movedprod.
Это структура таблицы продуктов productid, userid, prodname, manfname. В котором идентификатор пользователя пуст для отображения всех записей для всех пользователей
Это идентификатор структуры таблицы movedprod
productid, userid, moved_date
Но если какой-либо пользователь удаляет один продукт из своего списка, этот конкретный продукт копируется, а не перемещается в таблицу movedprod с идентификатором продукта и идентификатором пользователя сеанса.
Итак, я хочу выбрать продукты, которые находятся в таблице product, но если этот продукт находится в таблице movedproduct с определенным идентификатором пользователя и этот пользователь является идентификатором пользователя сеанса, тогда этот продукт не отображается для идентификатора пользователя сеанса, но отображается для другого идентификатора пользователя.
Ответ №1:
Select *
from product p,
movedproduct mp
where p.productid = mp.productid
and p.userid != "sessionid"
Ответ №2:
SELECT p.*
FROM product p
LEFT JOIN movedproduct mp
ON p.productid = mp.productid
AND mp.userid = "sessionid"
WHERE mp.productid IS NULL
или, альтернативно, использование НЕ СУЩЕСТВУЕТ:
SELECT p.*
FROM product p
WHERE NOT EXISTS
( SELECT 1
FROM movedproduct mp
WHERE p.productid = mp.productid
AND mp.userid = "sessionid"
)
или используя НЕ В:
SELECT p.*
FROM product p
WHERE p.productid NOT IN
( SELECT mp.productid
FROM movedproduct mp
WHERE mp.userid = "sessionid"
)