2011-06-27 32 views
1

在這裏我有兩個表像員工和一個mobileoutbox表,但這兩個表是不相互連接,但我想從兩個表中訪問數據我想匹配來自兩個表的數據並生成報告。如何從兩個表中訪問數據而無需外鍵? 表結構:如何訪問數據從兩個表中沒有外鍵在sql server 2005

employee table    mobileoutbox table 
empid       srno 
empname       mobileno 
empphoneno      textmsg 
empaddress      texttype 
+0

empphoneno和mobileno會一樣嗎? – gmhk

+1

好像你正試圖將兩張沒有任何關係的表關聯起來?你能顯示樣本數據和預期的輸出嗎?我假設'empphoneno'和'mobileno'可能是相關的,但如果你在問題中說明這一點,它會有所幫助。 –

回答

0

也許你在混淆外鍵約束和數據關係。是的,您可能有兩個數據匹配表(即這些可能的電話號碼)和數據限制。

如果您需要查詢有關列相匹配的數據兩個表,只使用一個INNER JOIN:

SELECT employee.*, mobileoutbox.* 
FROM employee INNER JOIN mobileoutbox 
ON employee.empphoneno = mobileoutbox.mobileno 

那麼你可能需要報告所有員工,甚至那些沒有移動誰。在這種情況下,你可以使用LEFT OUTER JOIN來做到這一點:

SELECT employee.*, mobileoutbox.* 
FROM employee LEFT OUTER JOIN mobileoutbox 
ON employee.empphoneno = mobileoutbox.mobileno 

這將返回該mobileoutbox領域的所有員工,而不是空數據,如果員工有一個手機號碼在正確匹配一個手機號碼錶。

0
SELECT em.*, mo.* 
FROM employee em, mobileoutbox mo 
WHERE em.empphoneno = mo.mobileno 

告訴我如果有什麼是不確定的。如果你需要「匹配」數據,那麼必須有一個外鍵,這兩個表之間的某種重疊信息,我希望你能理解那麼多。我以我的例子中的電話號碼作爲外鍵,我不知道這是否是事實的真相。

+0

這對大多數方言來說都不是有效的SQL,更不用說SQL Server了。 – gbn

+0

對我來說簡直就是丹迪。 –

+0

現在你已經編輯過它,所以不要太聰明。 http://stackoverflow.com/posts/6489476/revisions – gbn

0
SELECT e.empid, e.empname, e.empphoneno, e.empaddress, m.srno, m.mobileno, m.textmsg, m.texttype 
FROM employee e, mobileoutbox m 
WHERE e.empphoneno = m.mobileno 
相關問題