2012-03-29 10 views
2

申し訳ありませんが、この質問が少しばかに聞こえますが、私はこのエラーで何が起きているのか分かりません。 私は自然に3つのテーブルを1つのテーブルに結合し、それらを一緒に結合します(そして最終的にはビューyadda yaddaにプッシュします)。個々の自然な結合は良好であり、それらは機能します。それらの2つを組合わせることが働く。スリーとそれは停止します。連続した2つのユニオン

(
    (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

エラーの説明は私には無用未満と思われます。

ありがとうございました!

EDIT(現在の進行状況、 "製品" から欠落しているいくつかの要素):これについて

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` 
+2

私はそれがそれを壊す括弧だと思う。あなたはかっこなしで試しましたか? – Corbin

答えて

4

何?

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

各クエリセットのすべてのフィールドが一致していることを確認してください。

+0

これは非常に近いです。しかし、何らかの理由で、メインセット「製品」から行が欠落しています。実際にフィールドは一致していなかったので、適切な予測を追加しました。現在の進行状況を編集して表示します。 – jakebird451

+0

ああ、「製品」から「欠落している要素」はどういう意味ですか?ありがとう。 –

+0

ああ、私は今それを得た。それはクエリとは関係ありませんでした。 bdは不完全であり、いくつかの値に対して一致するセットを含んでいませんでした。これは、データを比較しようとして私を捨てました。助けてくれてありがとう! – jakebird451

2

ワイルドカード*の代わりに特定の列リストを使用して、個々のセットがUNION -edであることを確認してください。

1

UNION(キーワードはCORRESPONDINGで、これはmySQLではサポートされていません)は、同じタイプの同じ列数の同じユニオンテーブルを同じ順序で使用しているためです。それは動作しますか?

関連する問題