2014-02-17 50 views
0

我有這些表:MySQL的聲明,JOIN

enter image description here

enter image description here

enter image description here

enter image description here

我不知道我怎麼能寫一份聲明,即需要表「公司」的電子郵件,有Location_id = '1'Category_id = '130'; 我知道我應該使用JOIN,但我不知道如何從那裏去。

+0

你需要嘗試一些東西才能發佈問題,這是你生活中可能遇到的最簡單的連接之一 –

+0

我嘗試了一些東西SELECT Firm.email FROM公司INNER JOIN FirmID ON FirmID.location_id ='1'AND FirmID.category_id = '130'; – Vladson

回答

1
SELECT Firm.email 
FROM Firm 
INNER JOIN FirmID ON Firm.firma_id = FirmID.firma_id 
WHERE FirmID.location_id = '1' 
AND FirmID.Category_id = '130' 
+0

非常感謝你!這個對我有用! – Vladson

0

你可以這樣做:

SELECT f.email 
FROM Firm f 
WHERE f.firma_id = 
(
    SELECT ff.firma_id 
    FROM FirmID ff 
    WHERE ff.location_id = 1 
    AND ff.category_id = 130 
) 

使用一個內部的選擇。

但是,長期來說,使用JOINS會走的路,你有什麼嘗試,什麼不工作?

0

應執行以下操作簡單:

SELECT email 
FROM Firm, FirmID 
WHERE Firm.firma_id = FirmID.firma_id 
AND FirmID.location_id = 1 
AND FirmID.category_id = 130; 

它做了一個連接在幕後,但可以更清楚一點比使用JOIN關鍵字理解。

+0

我真的不會建議使用該語法,而不是加入。 –

+0

你能解釋一下爲什麼?我的理解是它比明確使用JOIN關鍵字效率更低,因爲SQL仍然會進行連接。謝謝 – Serenthia

+0

例如:http://stackoverflow.com/questions/1018822/inner-join-on-vs-where-clause –