MYSQL. SELECT, JOIN по таблицам, где данные второй таблицы не связаны с первой (SELECT JOIN WHERE DATA IS NOT EXIST)
Данный материал предоставлен сайтом
PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Выборка данных по двум mysql таблицам. Вывести данные у которых отсутствует связь между таблицами (SELECT AND JOIN DATA WHERE COLUMN VALUE IS NOT EXIST).
Разбор выборки на примере таблиц с пользователями и публикациями. Нужно вывести список пользователей, которые не публиковали ни одной публикации.
Для примера я завел 2 таблицы в базе данных MySql.
Первая таблица будет содержать список пользователей.
Данная таблица состоит только из 2 колонок. Это:
- id - autoincrement
- login - Логин пользователя
Вторая таблица содержит список публикаций и состоит из 5 колонок.
- id - autoincrement
- title - Заголовок публикации
- description - Краткое описание публикации
- text - Полное содержание публикации
- user_id - Идентификатор пользователя, который соответствует порядковому идентификатору пользователя в таблице users.
Данные колонки наполнены презентационными данными:
users:
posts:
И теперь делаем выборку по пользователям, которые не совершали ни одной публикации:
SELECT u.* FROM test.users u LEFT JOIN posts p ON p.user_id = u.id WHERE p.id IS NULL;
В данном запросе возвращаются данные из таблицы users и используем LEFT JOIN для связи с таблицей posts.
LEFT JOIN позволит вернуть данные, даже если их нет. И благодаря проверке на NULL вы можете вывести строки, у которых отсутствует соответствие.
Результат выполнения данного запроса:
В итоге мы получили список пользователей, которые не совершали ни одной публикации.
Данный запрос можно модифицировать под личные требования и выполнять необходимую выборку.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.