Intereting Posts
Joomla: получить группу пользователей с уровня доступа к странице с помощью PHP Получить отрицательные числа с OpenSSL Random In PHP Как сделать, взять текстовый файл и обернуть каждое слово тегом <v> </ v> Пакетный скрипт для замены коротких открытых тегов PHP <? Php Как я могу изменить свой код для эхо-данных данных элемента child, где был найден мой поисковый запрос, в XMLReader? Библиотека PHP GD выводит изображение и текстовое содержимое на одной странице Удалите несколько пустых узлов с помощью SimpleXML PHP Regex для определения относительного или абсолютного пути Сохранение элементов корзины покупок в файлах cookie и базе данных Разница между использованием памяти memory_get_peak_usage и фактическим использованием php-процесса Как получить текущее время в миллисекундах в PHP? Перенаправление в другую папку Предупреждение при вызове mysqli_error () Конвертировать дату с YYYYMMDD в формат DD / MM / YYYY в PHP Как перевести конкатенированную строку в шаблон твига, используя переводчик Symfony2

MySQL выбирает конкретную запись из таблицы, которая не находится в другой таблице

У меня проблема в MySQL при попытке выбрать конкретную запись из таблицы, которая не находится в другой таблице. Я знаю, что это предложение звучит орехами, но вот пример того, что я пытаюсь сделать.

Пользователи таблицы:

user_id,username,password (plus other columns not important to this) 

Настольные статьи:

  article_is,user_id,content (plus others) 

Представления таблиц (используемые для хранения данных, если пользователь просматривает конкретную статью):

  view_id,article_id,user_id,date 

Теперь я пытаюсь выбрать тех пользователей, которые НЕ читали определенную статью, например статью с идентификатором 10. Таким образом, они не имеют записи в таблице представлений.

Надеюсь, теперь это имеет смысл. Спасибо за ваши ответы. V.

 SELECT user_id FROM users u LEFT JOIN views v ON v.user_id=u.user_id AND v.article_id = 10 WHERE v.user_id IS NULL 

Попробуй это:

 SELECT user_id FROM users WHERE user_id NOT IN ( SELECT user_id FROM views WHERE article_id = 10 ) 

делать запросы NOT IN обычно не подходят для производительности … вместо этого использование LEFT JOIN и поиск NULL было бы лучше.

 select u.User_ID from Users U LEFT JOIN Views V on U.User_ID = V.User_ID AND v.Article_ID = 10 where V.User_ID IS NULL