0

InvoiceNumフィールドを介してPK/FK関係で接続された、Invoicesとmembersの2つのテーブルがあります。私は次のSQLを作成しましたが、正常に動作し、期待どおりに44レコードをプルします。

SELECT
  INVOICES.InvoiceNum,
  INVOICES.GroupNum,
  INVOICES.DivisionNum,
  INVOICES.DateBillFrom,
  INVOICES.DateBillTo
FROM INVOICES 
INNER JOIN MEMBERS ON INVOICES.InvoiceNum = MEMBERS.InvoiceNum
WHERE MEMBERS.MemberNum = '20032526000'

ここで、上記のクエリでとをINVOICES.GroupNumとに置き換えたいと思います。これらの値は、対応するGroup_numフィールドとDivision_numフィールドもあるGroupsテーブルとDivisionsテーブルにあります。次のSQLを作成しました。問題は、44レコードではなく528レコードをプルするようになったことです。INVOICES.DivisionNumGroupNameDivisionName

SELECT
  INVOICES.InvoiceNum,
  INVOICES.DateBillFrom,
  INVOICES.DateBillTo,
  DIVISIONS.DIVISION_NAME,
  GROUPS.GROUP_NAME
FROM INVOICES 
INNER JOIN MEMBERS ON INVOICES.InvoiceNum = MEMBERS.InvoiceNum 
INNER JOIN GROUPS ON INVOICES.GroupNum = GROUPS.Group_Num
INNER JOIN DIVISIONS ON INVOICES.DivisionNum = DIVISIONS.Division_Num
WHERE MEMBERS.MemberNum = '20032526000'

どんな助けでも大歓迎です。

4

2 に答える 2

0

クエリに欠落しているテーブル間に少なくとも 1 つのリレーションがあります。それはあなたに余分な記録を与えます。すべての共通フィールドを見つけます。たとえば、部門はグループに関連していますか?

于 2012-06-26T17:21:25.873 に答える
0

SQL構文に関する限り、ステートメントは問題ありません。

しかし、あなたが自問しなければならない(そしてそれに答えなければならない)質問:

  • Groups与えられた に対して何行取得できますGroupNumか?
  • 同上Divisions- そのためにいくつの行が存在しDivisionNumますか?

これらの数値は一意ではないように見えます-各数値に複数の行が存在するため、複数の行が返されます

于 2012-06-26T17:21:27.083 に答える