MySQL错误1248,创建正确的查询。初学者Q.

时间:2012-04-03 19:54:30

标签: mysql

我遇到以下问题遇到了一些困难。

SELECT maker, speed 
FROM  
(
    SELECT * 
    FROM product 
    NATURAL JOIN laptop
) 
WHERE hd > 30;

我正在努力寻找硬盘大于30千兆字节的笔记本电脑的制造商和速度。

我有两个关系笔记本电脑和产品。笔记本电脑有元组(制造商,型号,类型)和笔记本电脑有元组(型号,速度,内存,高清,屏幕和价格)。

我认为我在做什么。

  • 使用自然加入笔记本电脑加入产品,我认为和做到了 (当自己提交时)给我一个笔记本电脑的关系,但有两个 更多栏目制造商和类型。
  • 然后我试图从那张表中选择制造商和速度 高清的大小大于30。

2 个答案:

答案 0 :(得分:3)

FROM子句中的子查询需要表别名:

SELECT maker, speed 
FROM  
(
    SELECT * 
    FROM product 
    NATURAL JOIN laptop
  /* include an alias with AS */
) AS products_sub
WHERE hd > 30;

From the docs:

  

table_subquery也称为FROM子句中的子查询。此类子查询必须包含别名,以便为子查询结果提供表名。一个微不足道的例子如下;另请参见第12.2.9.8节“FROM子句中的子查询”。

但是对于您的示例,根本不需要子查询。

SELECT maker, speed 
FROM products NATURAL JOIN laptop
WHERE hd > 30;

请注意,通常不建议使用NATURAL JOIN,最好明确说明ON子句中加入的列。

答案 1 :(得分:0)

 SELECT maker, speed 
  FROM products   JOIN laptop 
  WHERE hd > 30;