2012-03-29 4 views
2

죄송합니다.이 질문은 조금 어리석은 소리지만, 나는이 오류가 무엇인지 확신 할 수 없습니다. 자연스럽게 3 개의 개별 테이블을 하나의 테이블로 결합한 다음 이들을 결합하여 (결국 yadda yadda 뷰로 푸시). 개별 자연 조인은 좋으며 작동합니다. 그것들 두 개를 합치면 작동합니다. 3 개가 멈 춥니 다.두 연속 노조

(
    (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에서 지원되지 않음)은 동일한 순서의 동일한 유형의 열을 가진 유니언 드 테이블에 의존하므로 편집이 잘됩니다. 작동합니까?