MySQL, выберите несовпадающую ссылку или ссылка не существует в другой таблице - PullRequest
0 голосов
/ 26 мая 2020

MySQL, выберите несоответствующую ссылку, или ссылка не существует в другой таблице.

Например.

table: category
category_id,    category_name
1               XYZ_1
2               XYZ_2
3               XYZ_3
4               XYZ_4
5               XYZ_5
6               XYZ_6


table: type
type_id,    type_name
1           A
2           B
3           C
4           D


table: type_match
match_Id,   type_id category_id
1           2       1
2           3       1
3           4       1
4           1       1
5           2       2
6           3       2
7           2       3       
8           4       3
9           2       4

Мне нужен category_id, где type_id не равно 3 или category_id не имеет не существует в таблице type_match: ожидаемый результат:

category_id
3  // category_id exist in type_match table but not matching type_id = 3
4  // category_id exist in type_match table but not matching type_id = 3
5  // category_id does not exist in type_match table
6  // category_id does not exist in type_match table

Пожалуйста, помогите.

Я попытался ответить, но не смог.

Как не выбирать строки, которых нет в другой таблице

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Вы можете использовать здесь запрос NOT EXISTS, проверяя, что в type_match нет строки с заданным category_id и type_id из 3:

SELECT *
FROM category c
WHERE NOT EXISTS (SELECT *
                  FROM type_match t
                  WHERE t.category_id = c.category_id 
                    AND t.type_id = 3
                  )

Вывод:

category_id     category_name
3               XYZ_3
4               XYZ_4
5               XYZ_5
6               XYZ_6

Демонстрация на dbfiddle

0 голосов
/ 26 мая 2020

Я бы, наверное, просто использовал здесь exists logi c:

SELECT c.category_id, c.category_name
FROM category c
WHERE NOT EXISTS (SELECT 1 FROM type_match t
                  WHERE t.type_id = t.category_id AND t.category_id = c.category_id);

screen capture of demo link below

Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...