我只是在Google周围搜索,但找不到对我的问题的完美答案。我正在尝试加入三个表订单,payment_milestone,发票表之间的关系是这样的:
付款里程碑的订单(一对多)一个订单可以有许多与其相关的付款里程碑,在不同的日期可能分别是25%,50%和25%。
现在,在payment_milestone时间到达后,将生成发票,并且在发票表中,将有order_id和payment_milestone_id
所以,当我像这样加入他们时:
SELECT
inv.invoice_id, ord.sub_total, ord.vat_added, pm.pay_date, pm.percentage
FROM orders ord
INNER JOIN
payment_milestone pm ON ord.order_id = pm.order_id
INNER JOIN
invoices inv ON ord.order_id = inv.order_id
它返回了我: this result这是多余的
我使用了GROUP BY
子句,它产生了以下结果:
result
我想要的结果是这样
invoice_id sub_total vat_added pay_date percentage
----------------------------------------------------------------------------
11 40000.00 2000.00 2018-09-20 53
12 40000.00 2000.00 2018-09-22 47
13 45360.00 2268.00 2018-09-27 100
我不知道我在哪里做错了查询。
提前谢谢!
答案 0 :(得分:0)
如果在Payment_milestone和发票表之间进行联接,则联接应位于payment_milestone_id
而非order_id
上。据我了解,根据您的有限问题陈述,每产生payment_milestone_id
,就会产生一个invoice_id
。
请尝试以下操作:
SELECT
inv.invoice_id,
ord.sub_total,
ord.vat_added,
pm.pay_date,
pm.percentage
FROM orders AS ord
INNER JOIN
payment_milestone AS pm ON ord.order_id = pm.order_id
INNER JOIN
invoices AS inv ON pm.payment_milestone_id = inv.payment_milestone_id