我有這個問題,我試圖通過。我一直在努力這麼做幾個小時,如果有人能指引我們走向正確的方向,那將是非常棒的。SQL加入聲明與where子句
這是德國人,所以我打算把它的英文翻譯:
我們只有問題(d)部分
(d)編寫SQL語句,讓餐廳和口服補液療法名(地點)的餐廳,不訂購任何薩拉特。
預期的結果將是:
大黑手黨:哥廷根
威尼斯:卡塞爾
我有這個問題,我試圖通過。我一直在努力這麼做幾個小時,如果有人能指引我們走向正確的方向,那將是非常棒的。SQL加入聲明與where子句
這是德國人,所以我打算把它的英文翻譯:
我們只有問題(d)部分
(d)編寫SQL語句,讓餐廳和口服補液療法名(地點)的餐廳,不訂購任何薩拉特。
預期的結果將是:
大黑手黨:哥廷根
威尼斯:卡塞爾
你可以嘗試這樣的:
SELECT name,ort FROM kunde WHERE name NOT IN (SELECT DISTINCT(pizzeria) FROM Liefervertrag WHERE product='salat')
不適到LolCoder的答案,但是當子查詢有空時請記住NOT NOT要小心。
這是另一種主題變化的方法。即使它使用內部連接,也不是很花哨。你可能會發現他們都在野外。
我的首選是第一個。即使沒有技術上的必要,我通常也會對「else null」進行明確的說明。
-- A
SELECT name, min(ort) as ort
FROM kunde as k INNER JOIN Liefervertrag as l on l.pizzeria = k.name
GROUP by name
HAVING count(case when l.product = 'salat' then 1 else null end) = 0
-- B
SELECT name, min(ort) as ort
FROM kunde as k INNER JOIN Liefervertrag as l on l.pizzeria = k.name
GROUP by name
HAVING sum(case when l.product = 'salat' then 1 else 0 end) = 0
-- C
SELECT name, ort
FROM kunde as k INNER JOIN Liefervertrag as l on l.pizzeria = k.name
GROUP by name, ort
HAVING count(case when l.product = 'salat' then 1 else null end) = 0
-- D
SELECT name, ort
FROM kunde as k INNER JOIN Liefervertrag as l on l.pizzeria = k.name
GROUP by name, ort
HAVING sum(case when l.product = 'salat' then 1 else 0 end) = 0
謝謝非常多,這也非常有幫助! – 2012-07-07 23:49:32
但我似乎沒有得到這個工作。我繼續得到一個錯誤:「在having clause中找不到k.product」我檢查了所有的拼寫和拼寫錯誤... – 2012-07-07 23:55:15
我發現了爲什麼...這裏有一個輕微的錯字...「k.product 「在子句中應該是」l.product「,否則它工作得很好! – 2012-07-07 23:58:09
現在,這似乎很容易......謝謝你這麼多 – 2012-07-07 18:20:59
如果回答可以幫助你,不要忘了接受的答案.... – 2012-07-07 18:22:25
是它沒有幫助,我會接受它,我還有另外一個問題:這也可以通過一些奇特的加入聲明來完成嗎?我的意思是你的解決方案是正確的,但我只是想知道 – 2012-07-07 18:24:36