Mysql - обратный 3 таблица-запрос - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть этот запрос, который дает мне список фирм (tblprov) с соответствующей категорией (tblrubro)

Обе таблицы связаны через таблицу поиска (tblprovxrubro)

SELECT p.id, p.name, r.idCat, r.rubroDesc FROM tblprov p
JOIN tblprovxrubro pr on p.id = pr.idFirm
JOIN tblrubros r on pr.idCat = r.idCat
WHERE p.id = 20

В этом примере у меня есть одна фирма, связанная с двумя категориями фирм, поэтому запрос даст мне такой результат

id     |  razonSocial |  idCat    |   catDesc  |
20     |    Firm 1    |     2     |Electronics |
20     |    Firm 1    |     3     | Software   |

Что если мне нужно знать противоположные категории, не связанные с этой фирмой?

Не могу понять

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете сделать LEFT JOIN из таблицы категорий в таблицу соединений.Таблица категорий будет самой левой, так как вы хотите рассмотреть все категории.Все категории, у которых нет соответствующей строки в соединительной таблице для pid = 20, будут вашим требуемым результатом.Мы рассматриваем эти строки, используя оператор сравнения IS NULL.

SELECT r.idCat, r.rubroDesc 
FROM tblrubros r 
LEFT JOIN tblprovxrubro pr 
  on pr.idCat = r.idCat AND 
     pr.idFirm = 20
WHERE pr.idCat IS NULL
...