gpt4 book ai didi

sql - 建议与 INNER 诗句 LEFT 连接

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

对于 sql 数据库管理员来说,这可能是一个简单的问题,但我是一个 C# 人,他只涉足数据库足够长的时间,以便在必要时让它们工作。

我有一个我设计的新数据库,其中只有很少的数据。

我需要一个将用于生成我的 View 的查询,但我似乎永远无法理解如何/何时使用 INNER 与 LEFT 连接。

一个 Packet可以有多个 Request条目(一个人要求 5 个不同的部分),每个 Request条目可以有不同 Action条目(暂停、取消、特殊订单、完成等)。

ProductionDatabase

我想创建一个生成以下数据表的查询:

SELECT
P.EmpID AS Requestor, P.DateStamp AS Submitted,
T.Description AS RequestType, L.Description AS Line, R.PartNo, R.Workorder, R.Qty,
RT.Description AS ReasonType, S.Description AS Status, A.EmpID AS Stator, A.DateStamp AS Stated, R.MTF
FROM Packet AS P
LEFT OUTER JOIN Request AS R ON (R.PacketID=P.ID)
LEFT OUTER JOIN Action AS A ON (A.RequestID=R.ID)
LEFT OUTER JOIN RequestType AS T ON (R.RequestTypeID=T.ID)
LEFT OUTER JOIN Line AS L ON (R.LineID=L.ID)
LEFT OUTER JOIN ReasonType AS RT ON (R.ReasonTypeID=RT.ID)
LEFT OUTER JOIN Status AS S ON (A.StatusID=S.ID)

这将返回 5 行,但 Status 有几个 NULL 条目。 , Stator , 和 Stated .

所以,我尝试用 INNER JOIN 写这个:
SELECT
P.EmpID AS Requestor, P.DateStamp AS Submitted,
T.Description AS RequestType, L.Description AS Line, R.PartNo, R.Workorder, R.Qty,
RT.Description AS ReasonType, S.Description AS Status, A.EmpID AS Stator, A.DateStamp AS Stated, R.MTF
FROM Packet AS P
INNER JOIN Request AS R ON (R.PacketID=P.ID)
INNER JOIN Action AS A ON (A.RequestID=R.ID)
INNER JOIN RequestType AS T ON (R.RequestTypeID=T.ID)
INNER JOIN Line AS L ON (R.LineID=L.ID)
INNER JOIN ReasonType AS RT ON (R.ReasonTypeID=RT.ID)
INNER JOIN Status AS S ON (A.StatusID=S.ID)

NULL 条目现在消失了,但现在我只返回了 3 行。

我怎么知道我应该使用哪个版本? ...或者,我应该使用 LEFT 和 INNER 连接的组合吗?

最佳答案

How do I know which version I should be using?



当连接条件无法给出任何匹配时,您希望缺失列的 NULL 值还是结果集中不存在该行?
  • 如果您想要缺失列的 NULL,请使用外部联接。
  • 如果您希望整行都不存在,请使用内部联接。

  • Should I be using a combination of LEFT and INNER joins?



    您应该为每个连接考虑您希望它是内部连接还是外部连接。

    关于sql - 建议与 INNER 诗句 LEFT 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984101/

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