连续两个工会

时间:2012-03-29 01:01:31

标签: sql

很抱歉,如果这个问题听起来有些愚蠢,但我不确定这个错误是什么。 我很自然地将3个单独的表与一个表连接起来,然后将它们组合在一起(并最终推入视图yadda yadda)。个人的天然联合是好的,他们工作。联合其中两个有效。三,它停止。

(
  (SELECT * FROM product NATURAL JOIN laptop)
  UNION
  (SELECT * FROM product NATURAL JOIN pc)
)
UNION
(SELECT * FROM product NATURAL JOIN printer)

错误:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION (SELECT * FROM product NATURAL JOIN pc) ) UNION (SEL' at line 3

错误描述对我来说似乎没用。

感谢您的帮助!

编辑(当前进展,“产品”中缺少一些元素):

SELECT *
FROM
(
  (SELECT maker, model, price FROM product NATURAL JOIN laptop)
    UNION
  (SELECT maker, model, price FROM product NATURAL JOIN pc)
    UNION
  (SELECT maker, model, price FROM product NATURAL JOIN printer)
) `Unioned`

3 个答案:

答案 0 :(得分:4)

这是怎么回事?

    SELECT * FROM product NATURAL JOIN laptop
       UNION
    SELECT * FROM product NATURAL JOIN pc
       UNION
    SELECT * FROM product NATURAL JOIN printer

确保匹配每个查询集的所有字段。

答案 1 :(得分:2)

尝试使用特定的列列表而不是通配符*,以确保各个集合可以UNION - 编辑。

答案 2 :(得分:1)

您的编辑看起来不错,因为UNION(没有CORRESPONDING关键字(mySQL不支持)依赖于具有相同顺序的相同列数的联合表。它有效吗?