MySQL-逆3表查询

时间:2018-11-23 16:39:42

标签: mysql inverse

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

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

不能弄清楚

1 个答案:

答案 0 :(得分:0)

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