我有两张这样的桌子
Invoice (invoice_no, invoice_date, customer_id, ...),
Customers (customer_id, customer_name, ...)
现在我要做的是按客户名称列出发票。
SELECT b.customer_name, a.*
FROM Invoice a, Customers b
WHERE a.customer_id=b.customer_id
ORDER BY b.customer_name
但是这个sql的问题是,如果有没有
customer_id
的发票,我怎样才能先列出这些发票,以及带有
customer_id
bycustomer_name
asc的发票。 最佳答案
改为使用LEFT JOIN
。
有点奇怪。怎么会有没有客户的发票呢?你要发给谁?不管怎样,这是问题所在。
SELECT a.*, b.* // SELECT only the columns you want
FROM Invoice a
LEFT JOIN Customers b
ON a.customer_ID = b.customer_ID
若要充分了解联接,请访问以下链接:
Visual Representation of SQL Joins
关于php - 如何按名称列出两个联接表的信息(有些带有名称,有些可能为空),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14373008/