2010-12-01 3 views
1

나는 완전히 독학하기 때문에 내 지식에는 분명한 차이가있다. 하나 이상의 테이블에서 데이터를 가져와야 할 때 조인을 수행하는 방법을 배웠습니다. mySQL과 조인 대 다른 메소드

select v.voucherNbr, v.balanceInit, v.acctID, a.address, a.city from vouchers v 
left join addresses a on v.acctID = a.id 

모든 바우처 레코드를 반환 것이다, 어떤 : 나는 바우처 번호, 계좌 번호, 상품권 테이블에서 균형과 다른 테이블에서 해당 주소를 필요로하는 경우 예를 들어, 나는이 작업을 수행 할 것 (이 경우 대응 주소가 없어도 바우처 레코드를 반환하기를 원하므로 왼쪽 가입).

최근에 동일한 데이터를 가져 오는 것으로 보이는 일부 코드를 상속했습니다 이 경우 올바른 레코드를 반환합니다).

select v.voucherNbr, v.balanceInit, v.acctID, a.address, a.city from vouchers v, addresses a 
where v.acctID = a.id 

누군가가 조인을 사용하는 대신 내게 그렇게 함의 의미를 설명 할 수 있습니까? 내가 말했듯이,이 특별한 경우에 조인과 동일한 데이터를 반환하지만 항상 그렇습니까?

답변

3

이것은 조인이며 암시적인 것입니다. 이것은 코딩 실천이 좋지 않으므로 내부 조인으로 바꿔야합니다.

이 오래된 코드의 문제점은 실수로 크로스 조인을 작성하고 코드를 유지 관리하기가 더 쉽다는 것입니다. 동일한 쿼리에서 암시 적 및 명시 적 조인을 혼용해서는 안되며 잘못된 결과가 나올 수도 있습니다.