SQL查询中的表
喜欢(cname,披萨)
客户(cname,area)
餐馆(rname,area)
出售(rname,披萨,价格)
请参阅:http://sqlfiddle.com/#!9/06ade3/6(包含代码和数据库架构)
预期结果
| rname |
---------
| D |
| L |
- >输出所有餐馆R的列表,使得不存在比R更多样化的任何餐馆R2。)
如果出现以下情况,餐厅会更加多样化:
R1的priceRange> = R2的priceRange和R1的numPizza> R2的numPizza
OR
R1的priceRange> priceRange of R2 AND numPizza of R1> = numPizza of R2
如果餐厅没有出售任何披萨,numPizza = 0且priceRange = 0
** priceRange指餐厅的最大分钟数。
** numPizza指的是餐厅的比萨饼总数
我的SQL代码:
SELECT r1.rname
FROM restaurants r1
INNER JOIN restaurants r2 ON r1.rname < r2.rname
WHERE (SELECT (MAX(s1.price)-MIN(s1.price) AS s1.pricerange)
FROM sells s1
INNER JOIN sells s2 ON s1.rname < s2.rname)
WHERE s1.pricerange > MAX(s1.price)-MIN(s1.price) AS s2.pricerange
AND COUNT(s1.pizza) >= COUNT(s2.pizza)
)
OR (SELECT (MAX(s1.price)-MIN(s1.price) AS s1.pricerange)
FROM sells s1
INNER JOIN sells s2 ON s1.rname < s2.rname)
WHERE s1.pricerange >= MAX(s1.price)-MIN(s1.price) AS s2.pricerange
AND COUNT(s1.pizza) > COUNT(s2.pizza)
)
我实施它的方式似乎是错误的。我的代码的最后一部分与第二部分非常相似。除了不平等的迹象。有一个更好的方法吗?