MySQL 왼쪽에 가입한 후 5.0.12 변경 내용-어떻게 다시 작성하는 쿼리

StackOverflow https://stackoverflow.com/questions/700779

  •  22-08-2019
  •  | 
  •  

문제

후 5.0.12MySQL 변화에 대한 구문을 왼쪽이 결합하는 경기 SQL2003 표준입니다.그래서

... FROM t1 , t2 LEFT JOIN t3 ON (expr)

해야로 다시 작성

... FROM (t1 , t2) LEFT JOIN t3 ON (expr

또는 다른 것이로 구문 분석 ... FROM t1 , (t2 LEFT JOIN t3 ON (expr))

지금,나는 고로 포팅에서 MySQL3.23(eek!) 5.1 고,오래 된 코드가 이 쿼리:

select b.*, c.*, g.*, p.perfname, p.persname 
from bookings b, customer c 
left join grade g on b.chrggrade=g.grcode 
left join person p on b.person=p.percode 
where complete='Y' and invoiced='N' 
and datemade between '2009-03-25' and '2009-03-31' 
and c.custcode=b.cust 
order by cust, person, tsref, stdt 

이와 함께 실패 SQL 오류 1054,알 수 없는 열 b.chrggrade.이 때문에 그것으로 구문 분석

선택 b., c., g.*, p.perfname,p.persname 서 예약 b,(고객의 c 왼쪽 가입급 g 에 b.chrggrade=g.grcode) 왼쪽에 가입하는 사람 p b.사람=p.percode 체='Y'고 청구='N' 고 datemade 사 2009-03-25'과'2009-03-31' c.custcode=b.cust 주문 cust,사람,tsref,stdt

나는 생각한다.

나는 확실히 제대로 배치된 대괄호할 수 있습니다 하지만 난에 부딪쳤습니다.내가 찾을 참조하이에서 변경 http://bugs.mysql.com/bug.php?id=13551, 는 문제를 해결하는 방법을 보여 줍니다 간단하 왼쪽에 가입하지만,여전히 작동할 수 없을 위해 그것을 밖으로 이 쿼리가 있습니다.David

도움이 되었습니까?

해결책

지를 사용하는 쉼표로 구문을 모두고 명시적에는 가입 문이 있습니다.쉼표로 구문을 참 조건에서 WHERE 절을 사용하지 않을 수 있습될 때까지 실행된 후에는 왼쪽/오른쪽 결합 방법에 따라,그것의 분석.를 사용하여 명시적인은 쿼리를 더 읽기 어쨌든.

...에서 t1,t2 왼쪽 가입하세 t3 에(expr) 가 ...에서 t1 내부 조 t2 에(expr)왼쪽 가입하세 t3 에(expr)

는 것이 또한 해결 오류가 있습니다.이없는 경우를 제외하고는 chrggrade 에서 예약 테이블,그 후 아무것도 수정에 오류가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top