2011-08-09 59 views
0

選擇我有以下查詢:MySQL的:從3個表

SELECT 
DISTINCT sites.site_id, 
sites.site_name, 
sites.site_url, 
earnings.cust_id 
FROM 
sites, 
earnings 
WHERE sites.site_id = earnings.site_id AND sites.site_id IN('8', '1666') 

該查詢給了我非常好問的信息。它返回兩行,一個用於站點8,另一個用於站點1666,以及來自這些表的信息。現在

,我想的是,CUST_ID的數目使用從另一個表中選擇(假設表的客戶),他們是由ID和這裏其他的信息是,如名字,姓氏等

基本上存儲我需要的是擴展該查詢以使用獲取的ID從表顧客中提取客戶姓名和姓氏。

回答

4

同樣的方法,你從兩個表中獲得信息。添加逗號,添加第三個表名,並將關係添加到WHERE子句中,就像使用前兩個表一樣。

SELECT 
DISTINCT sites.site_id, 
sites.site_name, 
sites.site_url, 
earnings.cust_id, 
customers.name, 
customers.last_name 
FROM 
sites, 
earnings, 
customers 
WHERE sites.site_id = earnings.site_id AND sites.site_id IN('8', '1666') AND customers.id = earnings.cust_id 

我認爲這是更清晰的寫出來雖然聯接:

SELECT 
    sites.site_id, 
    sites.site_name, 
    sites.site_url, 
    earnings.cust_id, 
    customers.name, 
    customers.last_name 
FROM 
    sites 
INNER JOIN 
    earnings 
ON 
    earnings.site_id = sites.site_id 
INNER JOIN 
    customers 
ON 
    customers.id = earnings.cust_id 
WHERE 
    sites.site_id IN (8, 1666) 
GROUP BY 
    sites.site_id 
+0

是的,請請請使用明確的聯接。它有助於記錄關係(等等)。使用隱式連接是計算錯誤假設的好方法。 –

+0

+1用於寫出連接(關係)並且不將它們混合到其中(過濾器) – Eddy