1

私はこれらのような2つのテーブルを持っています

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昇順でリストするにはどうすればよいかということcustomer_nameです。

4

3 に答える 3

3

代わりに使用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

結合に関する知識を完全に得るには、以下のリンクにアクセスしてください。

于 2013-01-17T06:00:39.707 に答える
0
SELECT  
    a.*, 
    b.customer_name
FROM    Invoice a
LEFT JOIN Customers b ON a.customer_ID = b.customerID

FROM tablea、tableb の代わりに結合を使用します。これは、WHERE で制限しない限り、両方のテーブルからデカルト積をフェッチするためです。

于 2013-01-17T06:02:56.567 に答える
0

これを使って

 SELECT * FROM Invoice,customer where Invoice.customer_id=customer.customer_id ORDER BY IF(Invoice.customer_id is NULL , Invoice.customer_id, ~Invoice.customer_id) ASC
于 2013-01-17T06:04:47.033 に答える