이것이 가능한지 확실치 않으며 설명하기가 어렵습니다.선택 내에서 서브 쿼리
나는이 방법으로SELECT
쿼리를 반환하고 싶습니다
: tbl_option_fields
tbl_person
tbl_person_optionals
첫 번째 테이블은 단순히 무제한 선택적 필드를 정의
pID | Name | Email | Dog Name | Fish Name ------------------------------------------------------- 44 | John | [email protected] | Scruffy | 56 | Jane | [email protected] | | Puffer 72 | Joe | [email protected] | Sparky | Gill
3 개 테이블이 있습니다.
optid | opttitle ------------------ 1 | Dog Name 2 | Fish Name 3 | Email
두 번째 표는 단순히 내가 사람들을 위해 데이터를 보관 :
pID | Name --------------- 44 | John 56 | Jane 72 | Joe
마지막 테이블의 날이 pID
ID | pID | optid | optval ---------------------------------- 1 | 44 | 1 | Scruffy 2 | 56 | 2 | Puffer 3 | 72 | 1 | Sparky 4 | 72 | 2 | Gill 5 | 72 | 3 | [email protected] 6 | 56 | 3 | [email protected] 7 | 44 | 3 | [email protected]을 위해 존재하는 임의의 데이터를 저장할 수 여기에 열은
SELECT 문의 결과는 결과의 헤더에 opttitle
을 표시해야합니다. 하위 쿼리가 좋지 않습니다.이 쿼리는 좋지 않을 수 있습니다.
여기 내 시도입니다 :
SELECT p.*, opt.optval
FROM `tbl_person` p
LEFT OUTER JOIN `tbl_person_optionals` opt ON p.pID = opt.pID
WHERE 1
이 쿼리 결과를 복제의 원인, 그리고 내가 이유를 이해 믿습니다.
pID | Name | optval ----------------------------- 44 | John | [email protected] 44 | John | Scruffy 56 | Jane | [email protected] 56 | Jane | Puffer 72 | Joe | [email protected] 72 | Joe | Sparky 72 | Joe | Gill는 다행스럽게도 필자는 차라리 행에서 새로운 기록보다 수평 옵션 필드를 표시하도록 설명하고있다. 이 작업을 수행 할 수 있습니까?
당신이 찾고있는 것은 피벗 쿼리이지만, mysql은이를 지원하지 않습니다. 해결 방법이 있지만 추악한 구문으로 만들어지며 피벗 된 결과에 더 많은 열을 추가하거나 추가 할 때 자동으로 확장되지 않습니다. –
그리고 그것은 아마도 내가 듣고 싶어했던 것입니다. 감사! – coffeemonitor