2017-09-01 113 views
0

我在SQL上遇到了一些麻煩。 我有如下的數據庫結構 enter image description here 我應該寫一個查詢返回:所有moviestar的姓名和地址,他們是女人(G ='F')和地址=「柏林」+所有工作室的名稱和地址,其中地址=「柏林」。按地址排序。關於數據庫的SQL查詢

我的建議是:

SELECT * FROM 
    (SELECT name, address 
    FROM MovieStar 
    WHERE gender = 'F' 
    UNION 
    SELECT name, address FROM Studio) T 
WHERE T.address LIKE '%Berlin%' ORDER BY T.address; 
+1

幫助我們幫助你 - s討論一些示例數據和你試圖獲得的結果 – Mureinik

+0

我看了一下數據庫結構,如果你真的使用這些名稱作爲鍵,你會遇到很大的問題。使用例如每個表的整數ID和鏈接使用ID的表,而不是名稱。 –

+0

你應該使用數字鍵。如果有兩個同名的電影或兩個同名的電影怎麼辦? – SEarle1986

回答

1

這應該爲你工作。

SELECT name, address 
    FROM MovieStar 
    WHERE gender = 'F' AND address LIKE '%Berlin%' 
    UNION 
    SELECT name, address FROM Studio WHERE address LIKE '%Berlin%' 
ORDER BY address; 
+0

它看起來接近我的解決方案,tnx。 –

0

你可以做這個

SELECT name, address from MovieStar WHERE gender='F' AND address LIKE '%Berlin%' 
UNION 
SELECT name, address from Studio WHERE address LIKE '%Berlin' 

,如果你想就像你在你的例子確實使用子查詢,我認爲你必須添加「爲」關鍵字的子查詢

SELECT * FROM 
    (SELECT name, address 
    FROM MovieStar 
    WHERE gender = 'F' 
    UNION 
    SELECT name, address FROM Studio) AS T 
WHERE T.address LIKE '%Berlin%' ORDER BY T.address; 

但我不確定,這是一個很好的性能,因爲你將有一個內存表創建,然後投影

+0

性能不成問題。我只是想確保我的解決方案能夠工作,因爲我無法測試它。 –

+0

然後第一個查詢將工作 –