我有4个表格带有以下架构:
说我需要在$ 2K的预算范围内购买PC,笔记本电脑和打印机。 我应该使用什么查询来查找下面的所有可用选项 预算?
显然,对于这个问题,我需要查看所有模型#'s
个人电脑,笔记本电脑和打印机,并过滤掉相应的价格
每一种产品。
但我不太确定在where where子句中需要什么 正确地做到这一点。
select Product.model
from Product, PC, Laptop, Printer
where ... ???
答案 0 :(得分:2)
我猜你会开始沿着这些方向开始
Select *
From PC, Laptop, Printer
Where (PC.price + Laptop.price + Printer.price) <= 2000
默示加入&#34;来自PC,笔记本电脑,打印机和#34;会生成所有组合,因为没有&#34;加入Where&#34;,然后你只需选择符合定价标准的组合。
答案 1 :(得分:0)
试
select Product.model
from Product a, PC b, Laptop c, Printer d
where a.model = b.model
and a.model = c.model
and a.model = d.model
and b.model = c.model
and b.model = d.model
and c.model = d.model
这是一个不好的查询,最好分开查询会获得更好的性能
答案 2 :(得分:0)
select PC.Model, PC.Price, Laptop.Model, Laptop.Price, Printer.Model, Printer.Price
from PC, Laptop, Printer
where (PC.price + Laptop.Price + Printer.Price) <= 2000
这对你有用吗?
答案 3 :(得分:0)
您可以尝试CROSS JOIN或CROSS APPLY来获取所有可能的组合,然后过滤掉价格总和低于2K $的所有组合
像
这样的东西
SELECT
*
FROM
PC
CROSS APPLY Laptop
CROSS APPLY Printer
WHERE
PC.price + Laptop.price + Printer.price < 2000