- 比爾斯(名稱,生產商)
- 酒吧(姓名,地址,許可證)
- 塞爾斯(酒吧,啤酒價格)
- 飲酒(姓名,地址,電話)
- 喜歡(飲酒,啤酒)
- 流連(飲酒,吧)
- 友(drinker1,drinker2)
任務:
周- 找到所有的啤酒喜歡由兩個或兩個以上的飲酒者
- 查找三個或三個以上的飲酒者喜歡所有的啤酒
- 查找安娜
- 的朋友喜歡所有的啤酒發現銷售啤酒是便宜了吧比杆 「99瓶」
查詢#1銷售的所有啤酒:
SELECT x name
FROM Beers x, Drinkers y, Likes s
WHERE y.name=s.drinker and s.beer=x.name
GROUP BY x.name
HAVING COUNT(s.drinker) >= 2;
查詢#2:
同3先前
查詢#。
SELECT x name
FROM Beers x, Friends y, Drinkers z, Likes p
WHERE z.name = "Anna"
AND z.name = y.drinker1
AND y.drinker2 = p.drinker
AND p.beer = x.name;
查詢4:
SELECT x.name
FROM Bars x, Sells y
WHERE x.name = y.bar
AND SOME(SELECT y.price) < ALL(SELECT t.price
FROM Sells t
WHERE t.bar = "99 bottles");
我對最後一個有點猶豫。我是否允許以這種方式使用SOME?我可以通過在select子句中使用外部變量來創建一個子查詢嗎?
[踢壞的習慣:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 在ANSI - ** 92 ** SQL標準(** 25年**之前)中將舊式*逗號分隔的表*樣式列表替換爲* proper * ANSI'JOIN'語法不鼓勵使用 –
是的,大家一直告訴我,只要我踩了SQL,但這正是我的老師正在使用的。他告訴我們,我們將在後面的課程中學習這個sintax。 – daniel