У меня возникли проблемы с сложным запросом MySQL:MySQL возвращать только если совпадений не найдено
Одна таблица содержит строки всех идентификаторов (проект идентификаторам), а другая таблица содержит «PROJECT_ID» ы проектов, которые были рассматривается. Поэтому мне нужно получить все ID, которые НЕ были просмотрены этим пользователем, но, возможно, были просмотрены другими пользователями.
Это код запроса, который не может в данный момент:
SELECT p.id FROM projects p
LEFT JOIN projects_viewed pv ON p.id = pv.project_id
WHERE NOT pv.username = 'SomeOneElse';
Это будет работать, но я думаю, что это возможно, потому что провал p.username может быть равна, а также не равны, чтобы «SomeOneElse» потому что «pv.project_id» не уникален, как упоминалось ранее.
Вот пример, учитывая, что начальные значения, как следует:
INSERT INTO `projects` (`id`) VALUES
(1), (2), (3), (4), (5);
INSERT INTO `projects_viewed` (`project_id`, `username`,) VALUES
(1, 'Billy'),
(2, 'SomeOneElse'),
(2, 'Billy'),
(3, 'Billy'),
(4, 'SomeOneElse'),
(4, 'Billy'),
(5, 'Billy'),
Если имя пользователя было «SomeOneElse», то я хочу, чтобы вернуть все идентификаторы из таблицы проектов, если нет совпадений между идентификатором (от таблица проектов) и project_id (из таблицы projects_viewed), или только те, которые находятся в project_viewed, имеют имя пользователя, которое не является именем пользователя, с которым мы запрашиваем (в данном случае - «SomeOneElse»).
Поэтому, учитывая этот пример, должны быть возвращены только идентификаторы 1, 3 и 5.
Спасибо, я понимаю, как стыки работу в настоящее время. Очень ценю помощь! – Mayron
Я думаю, что объединения кажутся более запутанными, поэтому приятно видеть другой путь вокруг него. – Mayron