例如,如果你想在你的問題中顯示這個項目表中使用COUNTRY_ID得到一個國家的名字,你可以做類似
SELECT C.CountryName_Colummn, C.SomeOtheColumn, ......
FROM Projects P INNER JOIN Countries C
ON P.id_Country = C.id_Country
WHERE SomeColum = 'Your Condition'
1)SELECT子句中,選擇您需要的列你的結果集。
2)FROM你提到表名稱
3)ON子句你定義表之間的關係Say表中有一個Column id_Country,指的是id_Country在Countries表中定義了這兩個表之間的關係。
4)當你選擇列列表,數據源(表),它們的關係(關於子句),然後你可以過濾從你查詢返回的行數,就像你可以像id_Country
WHERE C.CountryName ='UK'將僅返回來自英國的結果。
5)FROM子句中的字母「C」和「P」的別名,所以我們沒有再次ň再次鍵入完整的表名,使我們的代碼更簡單,更易於閱讀和調試。
無論您需要連接多少表才能獲取所需的數據,只要您可以在查詢中定義它們之間的關係表就可以正常工作。 SQL服務器很少會在一張表中找到所有需要的數據,通常你會加入2-3張或更多的表。例如你想一些數據存在於3個不同的表,你會加入他們的所有三個一查詢這樣的事情...
SELECT C.CountryName_Colummn, C.SomeOtheColumn, ......
FROM Projects P INNER JOIN Countries C
ON P.id_Country = C.id_Country
INNER JOIN Table_3_Name T3
ON T3.CommonColumn = P.SomeCommonColumn (it will be a common column between table 3 and Projects OR Countries)
WHERE SomeColum = 'Your Condition'
但你真的需要看看在加入,你可以做不同類型的在這個例子中,我使用了INNER JOIN,它只返回所有這些表之間的匹配行,你可以做LEFT JOIN或RIGHT JOIN。
LEFT JOIN返回所有從表中的行上的連接鍵字的左側,從其它表只匹配的行。
RIGHT JOIN返回JOIN關鍵詞右側的所有行,並僅對其他表中的行進行分頁。
查詢只用所需的列
Select customers.customer_name, Products.Product_type, Manufacturers.Manuf_name
from Projects inner join customers
on customers.cust_id= Projects.proj_cust_id
inner join Products
on Products.prod_id= Projects.proj_prod_id
inner join Manufacturers
on Manufacturers.man_id= Projects.proj_man_id
利用別名會給你一模一樣reuslt但很容易讀取代碼也試試這個....
Select C.customer_name, Prod.Product_type, M.Manuf_name
from Projects Proj inner join customers C
on C.cust_id= Proj.proj_cust_id
inner join Products Prod
on Prod.prod_id= Proj.proj_prod_id
inner join Manufacturers M
on M.man_id= Proj.proj_man_id
如果你有還沒有這樣做,請閱讀['JOIN's](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)。在你的特殊情況下,你需要將你的「主」表「內聯接」到所有需要的查詢表中。 –
@ PM77-1感謝您的參考。現在跳過閱讀。 – FeliceM
如果你想熟練掌握基本的JOIN,我建議通過[SQLZoo](http://sqlzoo.net/wiki/The_JOIN_operation)練習。如果您之後仍然遇到問題,請隨時回來顯示您嘗試過的方式以及它不符合您的目標的方式。 –