これは、SQLデータベース管理者にとってはおそらく簡単な質問ですが、私はC#の人であり、必要なときにデータベースを機能させるのに十分な時間だけデータベースに手を出しています。
私が設計した新しいデータベースには、ほんの少しのデータしか含まれていません。
ビューを生成するために使用されるクエリが必要ですが、INNERとLEFTの結合をいつどのように使用するかを理解できないようです。
APacketには複数のRequestエントリ(1人が5つの異なるパーツを要求)をRequest含めることができ、各エントリには異なるActionエントリ(保留、キャンセル、特別注文、完了など)を含めることができます。

次のデータテーブルを生成するクエリを作成したいと思います。
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)
Statusこれは5行を返しますが、、、、StatorおよびのNULLエントリがいくつかありますStated。
だから、私はこれをINNERJOINで書いてみました:
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結合を組み合わせて使用する必要がありますか?