Mysql - 逆向 3 table - 查询

Mysql - Inverse 3 table-query

我有这个查询,它给了我一个公司列表 (tblprov) 及其相应的类别 (tblrubro)

两个 table 通过查找相关 table (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   |

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

想不通

您可以执行从类别 table 到交汇点 table 的 LEFT JOIN。类别 table 将在最左边,因为您要考虑所有类别。所有在 pid = 20 的连接 table 中没有相应行的类别将是您需要的结果。我们使用 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