【发布时间】:2018-02-24 11:25:23
【问题描述】:
条件:
3 种不同的比萨饼,总价
每个披萨必须至少有 1 位顾客 (A/B/C) 喜欢。 A、B、C 是固定要求
(A & B & C)必须至少喜欢 3 个选定的比萨饼中的 2 个
预期结果:列出(餐厅名称、pizza1、pizza2、pizza3、总费用)
数据库架构:Customers(cname, area), Restaurants(rname, area), Pizzas(pizza), Sells(rname,pizza,price), Likes(cname, Pizza)
销售表
| rname | Pizzas | Price |
------------------------------
| rname1 | Hawaiian | $10 |
| rname2 | Pepperoni | $20 |
| rname2 | Pizza3 | $20 |
| rname3 | Pizza4 | $20 |
赞表
| cname | Pizzas
----------------------
| A | Hawaiian |
| A | Pizza3 |
| A | Pepperoni |
| B | Pizza3 |
| B | Hawaiian |
| C | Hawaiian |
| D | Pizza4 |
三种可能的比萨饼是夏威夷、Pizza3 和意大利辣香肠。
所以 A 必须至少喜欢 Hawaiian & Pizza3。 B 必须至少喜欢 Pizza3 和夏威夷菜,而 C 必须喜欢至少 2/3 的比萨饼,即意大利辣香肠和夏威夷菜。
A & B & C 不必喜欢同一个披萨。 但每个披萨必须至少有 1 位顾客喜欢。
SQL 查询:
SELECT s1.rname, s1.pizza, s2.pizza, s3.pizza, (s1.price+s2.price+s3.price)
FROM Sells s1 join
Sells s2 join
Sells s3
ON s1.rname = s2.rname = s3. rname
AND s1.price < s2.price < s3.price
WHERE s1.pizza < s2.pizza < s3.pizza
问题:我仍然需要将likes表添加到查询中才能检查
每个比萨饼必须被 (A/B/C) 中的至少 1 人喜欢。
(A & B & C)必须至少喜欢 3 个披萨中的 2 个
【问题讨论】:
-
是postgresql还是mysql?
-
将标签更改为 mysql。谢谢!
-
“A、B、C 是固定要求”是什么意思?那么“A”、“B”、“C”可以在查询中硬编码吗?
-
是的。它们可以被硬编码。它是固定的。例如。爱丽丝、鲍勃和克莱尔必须至少喜欢 3 个披萨中的 2 个。