mySQL:从具有唯一ID的Date分组的两个表中获取数据

时间:2015-01-19 10:30:32

标签: php mysql

关于如何按日期将表组合在一起有两个Stackoverflow问题,我可以让它工作。我的问题是我只想要属于唯一客户端ID IE的记录,其中client_id = x

我的表是:

TABLE INVOICE
invoice_id
client_id
invoice_number
invoice_amount
invoice_date

TABLE PAYMENT
payment_id
invoice_id
payment_amount
payment_date

目前我的mySQL语句读取整个数据库。如何仅为一个客户获取所有发票和付款详细信息? IE WHERE client_id = x

我的mySQL声明是:

SELECT payment_id AS idno, payment_amount AS debit, NULL as credit, payment_date 
AS added_on FROM payment 
UNION ALL 
SELECT invoice_id AS idno, NULL, invoice_total AS credit, invoice_date AS added_on FROM invoice 
WHERE client_id = 24 
ORDER BY added_on 

每张桌子必须有相同数量的列吗?如何识别数据来自哪个表?

2 个答案:

答案 0 :(得分:1)

SELECT * FROM invoice i
JOIN payment p ON p.invoice_id = i.invoice_id
WHERE i.client_id= 24

答案 1 :(得分:0)

我真的不知道UNION是怎么回事,但我确实知道你的两个查询需要相同数量的列,就像你一样。

我认为你的sql语句读取整个表的原因是因为你的两个表没有连接,你可以像@ Sid-Hussain所提到的那样,通过在你的第一个SELECT中加入它们。然后,您只需在第一个WHERE client_id = 24

上添加SELECT即可