我有这个查询,它为我提供了公司(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


在此示例中,我有一个与2个公司类别相关的公司,因此查询将为我提供此结果

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


如果我需要知道与该公司无关的相反类别,该怎么办?

不能弄清楚

最佳答案

您可以从类别表到联结表执行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

10-05 19:19