2013-10-13 52 views
11

未在此我的工作,我仍然只有SQL不甚瞭解,我的問題是讓對如何處理這個問題的方向。我希望這個問題不是太一般的或無意義的:如何從另一個表中獲取參考值?

我有一個分貝數表。他們中很少有基本表格,國家名單,客戶名單等等。 這些基本表格用於支持其他網格dropDownLists中的值,其中用戶使用某些字段的預設值,並且還手動填寫其他字段。事情是這樣的:

enter image description here

現在,我正在指向哪裏,我需要得到的實際值,而不是引用表中的動態報表。

正如我所說的,我遇到的問題是,我正在處理的特定表中的那些預設值是id_references(id_Country,id_Customer,..),而我需要它們表示的實際值。 我應該怎麼做才能獲得實際值?如果我將我的報告指向不同的表格,我會鬆開記錄之間的含義/鏈接。

+6

如果你有還沒有這樣做,請閱讀['JOIN's](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)。在你的特殊情況下,你需要將你的「主」表「內聯接」到所有需要的查詢表中。 –

+0

@ PM77-1感謝您的參考。現在跳過閱讀。 – FeliceM

+4

如果你想熟練掌握基本的JOIN,我建議通過[SQLZoo](http://sqlzoo.net/wiki/The_JOIN_operation)練習。如果您之後仍然遇到問題,請隨時回來顯示您嘗試過的方式以及它不符合您的目標的方式。 –

回答

13

例如,如果你想在你的問題中顯示這個項目表中使用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 
+0

因爲我在一張桌子上需要內部連接(prod,cuts,man)到其他3張桌子的情況下,我應該做3個查詢(從select開始,還是將所有這些查詢結合起來?) – FeliceM

+0

但我認爲你真的需要做一點研究,其實並不難,如果你將來在sql上工作,你真的需要對連接有很好的理解,因爲在過去的一年中,我無法想到一個查詢,其中所有的數據我需要在一張桌子:) –

+0

這是被授予的。我正在忙着研究它。謝謝。 – FeliceM

相關問題