2

外部キーを使用して 3 つのテーブルがリンクされています。テーブルの 1 つに null の可能性があるデータが含まれていますが、それでも表示したいです。また、複数の条件が機能しています。

これは私がこれまでに持っているものですが、うまくいきません:

SELECT ord.OrdNo, ord.OrdDate, cu.CustNo, cu.CustFirstName, cu.CustLastName, em.EmpNo, em.EmpFirstName, em.EmpLastName
FROM OrderTbl ord, Customer cu, Employee em
WHERE cu.CustNo=ord.CustNo
AND em.EmpNo=ord.EmpNo (+)
AND ( OrdDate BETWEEN '01-Jan-04'
AND '31-Jan-04')
AND cu.CustState = 'CO'

基本的に、注文テーブルの従業員情報は null かもしれませんが、それでもエントリを表示したいです。私はSQLの学習を始めたばかりなので、助けていただければ幸いです。

編集:上記のクエリを実行してもエラーはありませんでした。null フィールドを持つ結果が見つからなかっただけです。

4

2 に答える 2

4

すべての従業員の注文を表示するには、LEFT JOIN を正確に使用JOINSしてください。

SELECT ord.OrdNo, ord.OrdDate, cu.CustNo, cu.CustFirstName, cu.CustLastName, 
em.EmpNo, em.EmpFirstName, em.EmpLastName
FROM OrderTbl ord
  LEFT JOIN 
  Customer cu
    ON  cu.CustNo=ord.CustNo
    AND cu.CustState = 'CO'
  LEFT JOIN 
  Employee em
    ON  em.EmpNo=ord.EmpNo
WHERE OrdDate BETWEEN '2004-01-01' 
                  AND '2004-01-31'
;

参照:

JOIN の視覚的表現:

ここに画像の説明を入力

于 2013-02-02T09:11:01.073 に答える
0
SELECT ord.OrdNo, ord.OrdDate, cu.CustNo, cu.CustFirstName, cu.CustLastName, em.EmpNo, em.EmpFirstName, em.EmpLastName FROM OrderTbl ord, Customer cu, Employee em WHERE cu.CustNo=ord.CustNo AND em.EmpNo=ord.EmpNo AND ( ord.OrdDate BETWEEN 'YYYY-mm-dd' AND 'YYYY-mm-dd') AND cu.CustState = 'CO'

YYYY-mm-dd これは between 句でサポートされています。例:- date= 2013-01-01 から date=2013-01-31 まで

このようにしてみてください。お役に立てますように。

于 2013-02-02T09:14:38.210 に答える