【问题标题】:Trying to use two joins to find uncommon data in sql尝试使用两个连接来查找sql​​中的不常见数据
【发布时间】:2015-04-11 20:22:27
【问题描述】:

我有三张桌子。表 1 包含所有可用产品的列表。另外两个表包含在商店出售的产品。我正试图弄清楚如何找到哪家商店都没有销售的产品。

我可以通过以下方式为一家商店找到它:

SELECT DISTINCT Table1.pname

从表 1

LEFT JOIN Store1

ON Table1.pname = Store1.pname

Store1.pname 为空

当我尝试添加另一个联接以找出尚未售出的产品时,问题就出现了。谁能指出我正确的方向?

【问题讨论】:

  • 你最大的问题是建模。你真的每个商店都有单独的桌子吗?如果是这样,如果你能把设计做好,你的大部分问题都会消失。

标签: mysql sql join left-join inner-join


【解决方案1】:

试试下面的查询

SELECT DISTINCT Table1.pname

FROM Table1

LEFT JOIN Store1

ON Table1.pname = Store1.pname
WHERE Store1.pname IS NULL

UNION 

SELECT DISTINCT Table1.pname

FROM Table1
LEFT JOIN Store2  
ON Table1.pname = Store2.pname
WHERE Store2.pname IS NULL 

【讨论】:

  • 我刚刚意识到我在我的问题中犯了一个错误。我应该说既不是商店,也不是商店。修好了。
  • 好的,我试过了,但它只是返回了 Table1 中的所有内容,而不是 Store1 和 Store2 上没有的所有内容
猜你喜欢
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
相关资源
最近更新 更多