关于如何按日期将表组合在一起有两个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
每张桌子必须有相同数量的列吗?如何识别数据来自哪个表?
答案 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
即可