2014-11-26 1 views
0

도시의 모든 지점에서 계정을 가진 사람을 선택하려고합니다. (SQL 쿼리와) 구문에서 SQL 오류가 발생했습니다.

이제
SELECT A.customId 
FROM accountholder as A 
WHERE NOT EXISTS ( 
        (SELECT name 
        FROM branch 
        WHERE city='LA') 
EXCEPT (SELECT C.branch 
     FROM accountholder AS B, account AS C 
     WHERE B.accountnumber = C.accountnumber 
       AND A.customId = B.customId)); 

내가 가지고 :

ERROR 1064 (42000) : 당신은 당신의 SQL 구문에 오류가 있습니다; 근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 라인 1

에서 '제외를 (B AS가 계좌로부터 C.branch을 SELECT, WHERE B.accountnumber = C AS 계정'내가 할 없는 문제를 참조하십시오. 내가 장님 아니면 그냥 바보?

감사를 도움.

+1

MySQL 매뉴얼에서 EXCEPT 연산자를 찾으셨습니까? –

+0

우리 스크립트에서. 그러나 그것은 또한 "not in"에서 작동하지 않습니다. – haskellnoob

답변

1

다른 사람들이 언급했듯이, MySQL은 EXCEPT 연산을 지원하지 않습니다. 쿼리를 다시 작성해야합니다.

LA에 계좌 보유자의 계좌가있는 지점 외에 다른 지점이없는 경우 계좌 보유자를 조회하는 것으로 보입니다.

여기에 거친 추측 :

SELECT A.customId 
FROM accountholder AS A 
JOIN account AS C 
    ON A.accountnumber = C.accountnumber 
LEFT OUTER JOIN branch AS B 
    ON C.branch <> B.name AND B.city = 'LA' 
WHERE B.city IS NULL; 

나는 당신의 테이블과 열과의 관계에 대한 몇 가지 가정을 만들고 있어요, 그래서이 쿼리는 추측이다. 맹목적으로 실행하고 작동하도록 기대하지 마십시오. 나는 그것을 예제로 사용하여 데이터에 대해 비교가 올바르게 수행되고 있는지 확인해 주시기 바랍니다.

+0

도움에 감사드립니다. 나는 "왼쪽 외부 조인"을 사용하지 않았습니다. 아마도 이것을 할 시간입니다. 어쨌든 오류는 없습니다. 이 접근 방식에 대해 감사 드리며, 앞으로도 계속 노력하겠습니다! – haskellnoob

+0

조인 (및 그 변형)을 이해하지 않고 SQL을 사용하는 것은 'while'루프를 이해하지 않고 다른 프로그래밍 언어를 사용하는 것과 같습니다. 이것은 언어의 근본적인 부분입니다. –

5

MySQL이 EXCEPT를 사용하지 않습니다. NOT IN를 사용합니다.

SELECT A.customId 
FROM accountholder as A 
WHERE branch NOT IN ( 
(SELECT name FROM branch WHERE city='LA') 
AND branch NOT IN (SELECT C.branch FROM accountholder AS B, account AS C WHERE B.accountnumber = C.accountnumber AND A.customId = B.customId)); 
+0

오류 1054 (42S22) : 'IN/ALL/ANY 하위 쿼리'의 '분기'알 수없는 열입니다. 이것은 무엇을 의미 하는가? – haskellnoob

+1

분명히 계정 테이블에 분기라는 이름의 열이 없습니다. –

+0

좋아요, 지금은 도시 밖에있는 모든 고객을 보여줍니다 .. 그리고 "in"로 변경하면 "customers in"로 변경됩니다. 도시, 또는 다른 .. 나는 처음부터 시작해야합니다. 어쨌든 고마워! – haskellnoob

1

MySQL의 경우에만 지원 절을 이러한 일련의 작업을 추가 TS UNION하지만 INTERSECTEXCEPT/MINUS

은 ...

당신은 투표 할 수 있습니다

그 버그 리포트에 "나에게 미치는 영향"

오랜 기능 요청

http://bugs.mysql.com/bug.php?id=1309에게있다

+1

이것은 답변이 아니며 코멘트 여야합니다. –

+1

@JohnConde, 저는 동의하지 않습니다. 이것은 오류의 원인을 설명한다는 점에서 질문에 대한 대답입니다. 질문이 "원하는 결과를 제공하는 다른 쿼리를 작성하는 방법"이라면 이는 단지 암시 적입니다. –