2011-04-30 73 views
1

所以這是我們全年獲得外連接的唯一例子,不用說,這是錯誤的。我完全知道這個命令不能在MySQL上運行,所以我的問題是,這個命令是否在任何版本的SQL上運行?SQL的任何版本是否允許這種連接?

的名稱查找每個基於Texax- employeer的名字,一起任何家屬的& 關係,他/她 可能有

SELECT Fname, Lname, Dependent_Name, Relationship 
FROM EMPLOYEE LEFT JOIN DEPENDENT 
WHERE Ssn = Essn 
AND Adddress LIKE ‘%TX’ 

回答

1

據我所知沒有。它需要

SELECT Fname, Lname, Dependent_Name, Relationship 
FROM EMPLOYEE 
    LEFT JOIN DEPENDENT ON Ssn = Essn 
WHERE Adddress LIKE '%TX' 
+0

我推測一樣多。機會也會在考試中,所以我不知道該寫什麼;他的回答是錯誤的,但他可能會給出滿分或是他認爲不正確的答案。 – 2011-04-30 11:56:00

+0

永遠正確的答案 - 這會爲你的生活帶來好處。 – Hogan 2011-04-30 12:00:22

1

你有兩個選擇,就像這樣:

SELECT Fname, Lname, Dependent_Name, Relationship 
FROM EMPLOYEE 
LEFT JOIN DEPENDENT on Ssn = Essn AND Adddress LIKE ‘%TX’ 

SELECT Fname, Lname, Dependent_Name, Relationship 
FROM EMPLOYEE, DEPENDENT 
WHERE Ssn = Essn AND Adddress LIKE ‘%TX’ 
+0

這兩個答案都不正確。第一個返回所有員工,不管他們是否居住在Tx中。第二個是內部連接,所以不會返回居住在Tx中的僱員,但沒有家屬。 – 2011-04-30 11:59:34

+0

它確實說'Adddress LIKE'%TX'' - 除了地址拼寫錯誤,爲什麼不能工作@Martin? – Hogan 2011-04-30 11:59:46

+0

@霍根 - 我用我的推理編輯了評論。 – 2011-04-30 12:01:45

3

在標準SQL中,外部連接(左,右,或FULL)要求ON...USING...。標準SQL還需要單引號 - '%TX',而不是'%TX'。標準SQL確實不是要求您正確拼寫列名,但一般來說這是個好主意。 ;-)

我不會去說你的SQL語句不會在任何SQL dbms上運行。我已經做了很長時間了。我見過很多,呃,邊緣情況。 (我敢肯定每個SQL數據庫管理系統不符合每一個SQL標準的某些部分。)

SELECT Fname, Lname, Dependent_Name, Relationship 
FROM EMPLOYEE 
LEFT JOIN DEPENDENT ON Ssn = Essn 
WHERE Address LIKE '%TX'; 

您也可以使用舊的,預ANSI語法。

SELECT Fname, Lname, Dependent_Name, Relationship 
FROM EMPLOYEE, DEPENDENT 
WHERE Ssn = Essn 
AND address LIKE '%TX'; 

對我來說,它看起來像不管是誰教你這個東西企圖以LEFT JOIN更換EMPLOYEE, DEPENDENT之間的逗號更新預ANSI例子。雖然我可能會讚賞經濟上的努力,但我仍然不得不給這個人一個失敗的等級。