我有這種一對多的關係。另外,並不是所有的「主要」記錄都會在第二個數據庫表中有聯合記錄。MySQL - 複雜的LEFT JOIN
這裏是我的表:
tbl_customers tbl_addresses
在tbl_customers
一位顧客記錄可以明顯地有多個地址,在tbl_addresses
表。
這是我的困境。有很多客戶記錄有多個地址,我將其中一個地址記錄分配爲客戶記錄的「主要」地址。這只是一個簡單的column
,稱爲:primaryAddress
。如果該地址記錄是主地址,則該值將是數字1。
因此,這裏是我的查詢:
SELECT c.customername, a.state
FROM `tbl_customers` c
LEFT JOIN `tbl_addresses` a ON c.customerid = a.customerid
該查詢將導致超過1個地址任何客戶重複記錄。 如果我補充一點的LEFT JOIN:
SELECT c.customername, a.state
FROM `tbl_customers` c
LEFT JOIN `tbl_addresses` a ON c.customerid = a.customerid AND a.primaryAddress = 1
這不會產生任何結果,甚至當我在數據庫中看到有大量的地址記錄與primaryAddress = 1
所以我以爲我的查詢是錯誤的。
有人能看到我失蹤的東西嗎?
我要補充一點,有很多客戶記錄沒有地址記錄呢。我仍然需要顯示這些客戶,但將a.state保留爲空。(這就是我選擇LEFT JOIN的原因)。 – coffeemonitor
我發現你寫的第二個查詢沒有錯。還有什麼你遺漏了嗎? –