Я не могу понять один запрос sql. Мне нужно получить данные из таблицы, которые не объединены в другую таблицу. Так что моих ограниченных знаний здесь недостаточно.
Допустим, у нас есть 3 таблицы клиент - категория - client_category
ТАБЛИЧНЫЙ КЛИЕНТ
| я бы | название |
|---|---|
| 1 | клиент 1 |
| 2 | клиент 2 |
категория ТАБЛИЦА
| я бы | название |
|---|---|
| 1 | категория 1 |
| 2 | категория 2 |
| 3 | категория 3 |
ТАБЛИЦА client_category
| я бы | id_client | id_category |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| 3 | 2 | 3 |
ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ
| клиент | категория |
|---|---|
| клиент 1 | категория 2 |
| клиент 1 | категория 3 |
Это также необходимо для работы с большим количеством клиентов и категорий.






SELECT client.name, category.name
FROM client
CROSS JOIN category
WHERE NOT EXISTS ( SELECT NULL
FROM client_category
WHERE client.id = client_category.id_client
AND category.id = client_category.id_category )
или
SELECT client.name, category.name
FROM client
CROSS JOIN category
LEFT JOIN client_category ON client.id = client_category.id_client
AND category.id = client_category.id_category
WHERE client_category.id IS NULL
Вас интересуют все ссылки возможно между клиент и категория, которых нет в client_category.
SELECT
c.name, y.name
FROM client c
CROSS JOIN category y
LEFT JOIN client_category cc ON cc.id_client = c.id AND cc.id_category = y.id
WHERE cc.id IS NULL
ORDER BY c.id, y.id
выход:
| название | название |
|---|---|
| клиент 1 | категория 2 |
| клиент 1 | категория 3 |
это не имеет особого смысла, если мы не можем собрать все вместе.