从3个表SQL中求和

时间:2013-10-09 11:08:58

标签: sql

我有4个表格带有以下架构:

  • 产品(制造商,型号,类型)
  • PC (型号,速度,内存,高清,价格)
  • 笔记本电脑(型号,速度,内存,高清,屏幕,价格)
  • 打印机(型号,颜色,类型,价格)

说我需要在$ 2K的预算范围内购买PC,笔记本电脑和打印机。 我应该使用什么查询来查找下面的所有可用选项 预算?

显然,对于这个问题,我需要查看所有模型#'s 个人电脑,笔记本电脑和打印机,并过滤掉相应的价格 每一种产品。

但我不太确定在where where子句中需要什么 正确地做到这一点。

select Product.model
from Product, PC, Laptop, Printer
where ... ???

4 个答案:

答案 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