Дать запрос mysql

#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"
  )