0

1対多のマッピングを持つ3つのテーブルがあります。つまり、名前は配送と支払いと1対多の関係にあります(**大文字と小文字の区別を無視します**

    Table parent has 3 columns    id, name, name_id
    Table shipping has 3 columns  id, shippingName,name_id
    Table payment has 3 columns   id, paymentName, name_id

以下のクエリを実行すると

    SELECT shipping.shippingName,payment.paymentName,parent.name,Parent.name_id
    FROM parent 
    JOIN shipping
    ON  parent.name_id = shipping.name_id
    JOIN payment
    ON  parent.name_id = payment.name_id
    WHERE parent.name_id= '3'

上記は戻ります

   shipping Name             paymentName          name          name_id
   Fedex                      Credit              AA              3
   Fedex                      Debit               AA              3
   USPS                       Credit              AA              3
   USPS                       Debit               AA              3

しかし、私が欲しかったのは

   shipping Name             paymentName          name          name_id
   Fedex                      Credit              AA              3
   USPS                       Debit               AA              3

方法はありますか?または、配送テーブルと支払いテーブルの間のマッピングを設定する必要がありますか?

  Shipping Table

   ID        ShippingName    name_id
   1             FEDEX         3
   2             USPS          3

   Payment Table

   ID        PaymentName    name_id
   1         Credit           3
   2         Debit            3

   Parent Table

   ID        name        name_id
   1001        A           1
   1002        B           2
   1003       AA            3

フェデックスには支払いオプションがありません..親は配送で1対多です&&親は支払いで1対多です..支払いと配送の間に関係はありません私の質問は、1回のデータベース呼び出しまたは2 つの異なるクエリ (親 + 配送) (親 + 支払い) で 2 回呼び出す必要があります。

4

3 に答える 3

1
Shipping Table

ID        ShippingName    name_id  Payment_ID
1             FEDEX         3         1
2             USPS          3         2

Payment Table

ID        PaymentName   
1         Credit        
2         Debit        

Parent Table

ID        name        name_id
1001        A           1
1002        B           2
1003       AA           3

クエリ:

SELECT shipping.shippingName,payment.paymentName,parent.name,Parent.name_id
FROM parent 
JOIN shipping
ON  parent.name_id = shipping.name_id
JOIN payment
ON  shipping.Payment_ID = payment.ID
WHERE parent.name_id= '3';
于 2013-02-13T16:38:42.527 に答える
0

PaymentName IN ('Credit',Debit') AND Name_ID =3

于 2013-02-13T16:26:13.687 に答える