JDBC检索多个联接

时间:2013-02-12 22:06:44

标签: mysql sql

我有三张表格,其中包含一对多的映射,即名称与运费和付款有一对多关系( **忽略区分大小写**

    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

联邦快递没有付款选项..父母有一对多的运费&&父母有一对多的付款..付款和运输之间没有关系 我的问题是,甚至可以在一个数据库调用中获得我想要的结果集,或者应该使用2个不同的查询调用两次(父级+运输)(父级+付款)

3 个答案:

答案 0 :(得分: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';

答案 1 :(得分:0)

只需添加此

GROUP BY shipping.shippingName ,payment.paymentName
在您的查询结尾处

答案 2 :(得分:0)

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

相关问题