2010-12-01 102 views
1

好吧,所以我在MySQL中有兩個表。一張桌子上藏着客戶信息,另一張藏着電話號碼。我需要在一個查詢中加入這些表格,以從電話表中選擇最多兩個電話號碼以及客戶信息。現在我的查詢是:一個查詢連接來自一個表中的多行

SELECT customers.name, phones.phone, phones2.phone 
FROM customers 
LEFT JOIN phones ON phones.customerid=customers.id 
LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id 
GROUP BY customers.id; 

然而,這個返回相同的電話號碼,電話1和電話2基本上就是我需要做的是通過偏移1 phones2,但我不知道該怎麼做語法。

手機在單獨的表格中,因爲它是一對多的關係。

我需要這個在一個查詢中,因爲我直接導出到csv。

非常感謝幫助。提前致謝。

回答

1

要避免遇到相同的電話號碼兩次,你可以改變這一點:

LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id 

要這樣:

LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id 
AND phones2.phone <> phones.phone 
+0

這是完美的。我投票給你,然後試圖接受答案,但它說我不得不等待9分鐘。我會盡快完成。謝謝,馬克。 – Chris 2010-12-01 23:38:08

+0

@thejew - 您不需要爲此連接兩次電話表。 – 2010-12-01 23:45:21

3

你只是想要一個任意0,1或2%的客戶的電話號碼,然後?如果有的話MaxMin行嗎?這將爲您節省加入。

SELECT customers.name, 
     MAX(phones.phone) AS phone, 
     CASE WHEN MAX(phones.phone) = MIN(phones.phone) THEN NULL ELSE MIN(phones.phone) END AS phone2 
FROM customers 
LEFT JOIN phones ON phones.customerid=customers.id 
GROUP BY customers.id; 
1

你想要做的是去除數字相同的情況。

SELECT customers.name, phones.phone, phones2.phone 
FROM customers 
LEFT JOIN phones ON phones.customerid=customers.id 
LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id 
WHERE phones2.phone != phones.phone 
GROUP BY customers.id 
相關問題