我有两张这样的桌子

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_idbycustomer_nameasc的发票。

最佳答案

改为使用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/

10-12 20:11