2011-09-14 110 views
1

我有兩個表:一個用於transacctions和一個賬單。這可能是一項成功的交易,可以產生賬單。可能沒有批准的交易不生成賬單。與表MySQL查詢,可能會或可能不會有數據

的問題是,我想打印兩個表的信息,但無法看到是否會有(或沒有)的法案。

一些代表碧草自:

Transactions: service_bill, auth_number, UserId ... 
Bill: UserId, ... 

當我查詢:

SELECT * 
    FROM transactions, bill 
    WHERE MONTH(date) = '09' 
    AND 
    YEAR(date) = 2011 
     (...) 
     AND 
     bill.userId = transactions.userId 
     (...) 
    ORDER BY id_transaction 

如果我使用的查詢,我將打印配襯的「用戶id」的信息,但問題在於它打印沒有帳單的交易 - 因爲你沒有userId匹配 -

如果我放鬆在哪裏,它將打印幾次相同的信息N:/

最後,我想打印的所有信息-without repetitions-並在不產生賬單,當顯示交易賬單信息爲空或類似的東西。

任何想法來解決這個問題?

+0

使用外連接? – Randy

回答

3

您想使用LEFT JOIN在這種情況下。這將返回第一個表中的所有行以及第二個表中找到的任何匹配。任何不匹配的行將爲第二個表的列返回NULL值。

SELECT * 
    FROM transactions t 
     LEFT JOIN bill b 
      ON t.userId = b.userId 
    WHERE MONTH(date) = '09' 
     AND YEAR(date) = 2011 
    (...) 
    ORDER BY t.id_transaction 
+0

非常感謝。左加入是事情。 – Kani

+0

@Kani:很高興提供幫助。請註明爲「接受」點擊旁邊的概述對號這個答案。 –

相關問題