반응형
사용자가 있고 거주지 주소와 우편 주소를 모두 저장하는 간단한 데이터베이스를 설정하려고합니다. 테이블이 2 개 있어요
사용자
id (Primary Key)
name (Varchar 255)
residential_id (foreign key)
postal_id (foreign key)
주소
id (primary key)
type (enum of R and P)
street (varchar 255)
suburb (varchar 255)
내부 조인을 시도하고 있는데 결과 세트는 다음과 같습니다.
id-이름-Residential_street-Residential_suburb, postal_street, postal_suburb
주소 세부 정보에 대해 null 결과가 계속 발생합니다. 주소 테이블에서 두 세트의 데이터를 얻고 충돌이 있기 때문이라고 가정합니다. 거주자 ID와 우편 ID에 연결된 주소 필드를 동시에 반환 할 수 있습니까?
내 SQL 구문은
SELECT * FROM users
LEFT JOIN address
ON (users.residential_id = address.id AND users.postal_id = address.id)
편집하다. 지적했듯이 내 DB 디자인이 다소 열악하고 개선하려고합니다. 내가 달성하려는 핵심은 관련된 거주지 및 우편 주소와 함께 사람의 세부 정보를 저장할 수 있다는 것입니다. 예를 들어 작업 주소를 포함하도록 데이터베이스를 확장하지 않을 것이므로 테이블의 복잡성을 줄일 수 있기를 바랍니다.
해결 방법
다음은
당신이 원하는 것은 :
select
u.*,
res.street residential_street,
res.suburb residential_suburb,
pos.street postal_street,
pos.suburb postal_suburb
from users u
left join address res on u.id=res.id and res.addressType='R'
left join address pos on u.id=pos.id and pos.addressType='P'
여기서 핵심은 주소 테이블에 두 번 조인해야한다는 것입니다. 각 조인이 적절한 유형의 주소 만 선택하려면 주소 유형 판별자가 필요합니다. 귀하의 스키마가 다른 경우 명확하게 해주시면 답변을 수정하겠습니다.
참조 페이지 https://stackoverflow.com/questions/1753562
반응형
'MySql' 카테고리의 다른 글
MySQL 암호 기능 (0) | 2020.12.28 |
---|---|
MySQL 여러 레코드가있는 MySQL "SELECT LIMIT 1"은 맨 위에서 첫 번째 레코드를 선택합니까? (0) | 2020.12.28 |
MySQL 두 개의 테이블이있는 MySQL 쿼리 PHP (0) | 2020.12.28 |
MySQL 명령 줄에서 ssh를 통해 원격 컴퓨터에서 MySQL 쿼리 실행 (0) | 2020.12.27 |
MySQL 최고의 암호화 기술 (0) | 2020.12.27 |
댓글