家庭作业:没有间接获得价值的子查询

时间:2009-12-09 17:20:49

标签: sql

我很难创建一个smth查询,听起来像这样: 什么是比灰盒洗涤剂花费更多的物品的名称和颜色(2个属性:颜色:灰色,类型:洗涤剂)。

注意:我不允许使用子查询或将价格用作常量。

使用子查询我设法得到了这个:

SELECT name, color
FROM items
WHERE cost > (SELECT price FROM items WHERE type='detergent' AND color='grey');

关于如何在不使用子查询的情况下获得上述查询的任何想法?

我的想法已经不多了......

3 个答案:

答案 0 :(得分:5)

您可以使用联接自我。

SELECT i1.name, i1.color
FROM items i1
INNER JOIN items i2 
  ON (i2.type = 'detergent' 
     AND i2.color = 'grey' 
     AND i1.cost > i2.cost)

答案 1 :(得分:0)

SELECT名称,颜色 从项目t1 加入(SELECT price FROM items WHERE type ='detergent'AND color''bray')t2 在t1.price> t2.price;

答案 2 :(得分:-1)

这样:

SELECT distinct others.name, others.color
FROM items others
   Join items GreyDet
       On others.Price > greyDet.Price
WHERE others.type <> 'detergent'
    And others.Color <> 'grey'
    And greyDet.type = 'detergent'
    And greyDet.Color = 'grey';

注意:此解决方案将输出限制为仅非灰色洗涤剂的行。如果有可能有多个灰色洗涤剂记录,价格不同,这是必要的。