【问题标题】:Mysql - Inverse 3 table-queryMysql - 逆3表查询
【发布时间】:2018-11-23 16:39:42
【问题描述】:

我有这个查询,它给了我一个公司列表 (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   |

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

想不通

【问题讨论】:

  • 礼仪禁止我分享我对提供这样一个结果的有用性的想法。

标签: mysql inverse


【解决方案1】:

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

【讨论】:

  • 就是这样!谢谢。
猜你喜欢
  • 2013-07-25
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多