【问题标题】:SQL Query with Multiple Joins and exclusions具有多个连接和排除的 SQL 查询
【发布时间】:2015-09-09 13:45:00
【问题描述】:

我有两个表 Table A=Orders 和 Table B=OrderDetails,它们由唯一的 order_no 连接。

对于 Order TableA 中的每个 ORDER_no,可以在 OrderDetails 表 B 中附加多行。基本上,如果表 B 中的任何行等于特定名称,我需要一个查询来排除两个表中的整个 Order。

例子:

如果 Order 1234 在 OrderDetails TableB 中有 5 行,其中一行 = 'NOTE',那么我希望将整个 ORder 1234 从结果中排除。目前它只排除了该行但显示了其他行?

【问题讨论】:

  • 坚持使用相同的名称,即 Orders 和 OrderDetails,或者 TableA 和 TableB。目前的组合太混乱了。
  • 添加一些示例代码

标签: sql join


【解决方案1】:

这是你想要的吗?它获取没有“备注”详细记录的订单:

select o.*
from orders o
where not exists (select 1
                  from orderdetails od
                  where od.orderid = o.orderid and od.name = 'Notes'
                 );

如果你想要所有的详细记录,你可以在外部查询中加入orderdetails

【讨论】:

  • 是的,这似乎可行,现在我只需要调整其他表的附加连接即可。希望我现在可以添加复杂的连接,因为我只选择那些没有注释的订单。谢谢。
  • 工作完美,感谢您的快速回复和破译我的问题,我是新手 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2019-01-15
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 2019-10-07
相关资源
最近更新 更多