大佬教程收集整理的这篇文章主要介绍了SQL查找满足至少一个条件的元组列表,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题: 找到至少满足以下条件之一的餐厅 A:
条件
预期结果: 列出(餐厅名称)
数据库架构: 客户(姓名,地区), 餐厅(名称,地区), 比萨(比萨), 销售(名称,披萨,价格), 喜欢(cname,披萨)
餐厅餐桌
rname | area
---------+---------
Alpha | East
Beta | East
Gamma | Central
Delta | Central
Epsilon | north
Zeta | north
Eta | South
Theta | South
Iota | West
Lambda | West
销售表
rname | pizza | price
---------+------------+-------
Gamma | Funghi | 30
Gamma | Margherita | 30
Gamma | Marinara | 19
Delta | Funghi | 34
Delta | Margherita | 15
Delta | Marinara | 22
Epsilon | Hawaiian | 28
Zeta | Funghi | 17
Eta | Marinara | 24
Theta | Diavola | 15
Theta | Hawaiian | 26
Iota | Funghi | 27
Lambda | Diavola | 21
Lambda | Funghi | 30
Lambda | Hawaiian | 16
Lambda | Margherita | 18
Lambda | Marinara | 32
我的 sql 查询
SELECT disTINCT R.rname
FROM Restaurants R
NATURAL JOIN Sells S
WHERE (
(CASE WHEN (R.area = 'Central') THEN 1 ELSE 0 END) +
(CASE WHEN ((SELECT COUNT(disTINCT S2.pizza) FROM Sells S2 WHERE R.rname = S2.rname)>= 10) THEN 1 ELSE 0 END) +
(CASE WHEN (S.price <= 20) THEN 1 ELSE 0 END)
) >= 1;
问题 我似乎无法得到问题要求的正确答案。感谢您能帮我看看我的 sql 查询出了什么问题。
我想我会在 where
子句中使用子查询:
select r.*
from restaurants r
where r.location = 'Central' or
(select count(*)
from sells s
where s.rname = r.rname
) >= 10 or
(select max(s.price)
from sells s
where s.rname = r.rname
) <= 20;
还有一些方法可以使用 JOIN
和聚合来处理此查询:
select r.*
from restaurants r left join
sells s
using (rname)
group by r.rname -- assumes this is a unique or primary key
having r.location = 'Central' or
count(*) >= 10 or
max(s.price) <= 20;
两者都假设 sells
表只有比萨饼。
以上是大佬教程为你收集整理的SQL查找满足至少一个条件的元组列表全部内容,希望文章能够帮你解决SQL查找满足至少一个条件的元组列表所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。