我有三张表格,其中包含一对多的映射,即名称与运费和付款有一对多关系( **忽略区分大小写** )
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个不同的查询调用两次(父级+运输)(父级+付款)
答案 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