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