gpt4 book ai didi

sql - 外连接中的 AND 语法?

转载 作者:行者123 更新时间:2023-12-04 06:15:06 25 4
gpt4 key购买 nike

这是我发现的一个更大的查询的一小部分是一个问题。

除了主键之外,我还尝试向外部联接添加过滤器。问题是我收到的结果的 StatusCode 不是 0 或 1,就好像它忽略了过滤器一样。

SELECT * 
FROM Products P
LEFT OUTER JOIN OrderDetails OD ON OD.SkuNum = P.SkuNum
LEFT OUTER JOIN OrderHeader OH ON (OD.ShipmentNum = OH.ShipmentNum
AND (OH.StatusCode = 0 OR OH.StatusCode = 1))
WHERE P.SkuNum = XXXX

请注意,如果我将该语句 (OH.StatusCode = 0 OR OH.StatusCode = 1) 放在 where 子句中,它会根据该条件过滤整个结果集,这也不是我想要的。

对于这个用简单的英语加入,我想说“给我所有的产品和这里没有列出的其他东西。如果这个产品有任何发货,请给我他们的所有详细信息,其中发货状态为 1 或0"

我的语法错误还是我遗漏了什么?谢谢。

编辑:更新了查询以包含产品以使其更清楚我正在寻找的内容并修复了换位错误。

最佳答案

通常,对于给定的 OrderDetail,您将始终拥有一个 OrderHeader,但您可能没有状态为 0、1 的 OrderHeader。

通过进行左连接,您将获得该特定 Sku 的所有信息,然后如果订单标题没有状态 0、1,则这些列将是 NULL .

我想你想要一个 内连接 .但这通常相当于将所有内容都放入 哪里 ,所以我确信你已经完全描述了你想要在这里得到的东西。

看到你的编辑后,试试这个:

SELECT * 
FROM Products P
LEFT JOIN (
SELECT OD.SkuNum, OD.ShipmentNum, etc.
FROM OrderDetails OD
INNER JOIN OrderHeader OH
ON OD.ShipmentNum = OH.ShipmentNum
AND (OH.StatusCode = 0 OR OH.StatusCode = 1)
) AS Orders ON Orders.SkuNum = P.SkuNum
WHERE P.SkuNum = XXXX

关于sql - 外连接中的 AND 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com