하나의 키 테이블, 동일한 열 이름을 가진 많은 데이터 테이블 및 하나의 사용자 테이블이 있습니다. 키 테이블에서 값을 선택하려고합니다. 이미이 키 테이블에서 선택된 항목에 고유 ID (uaID)로 각 데이터 테이블의 일부 선택된 값을 결합합니다 (각 키 테이블 결과에는 데이터 테이블의 범위 중 하나만, 전부는 아니고 일부 항목은 데이터 테이블에서 Null 결과를 반환하며 null 결과로 인해 아무 것도 없거나 생략되지 않도록하려는 경우) users 테이블의 각 결과에 대한 사용자 데이터 이것은 항상 결과를 가져올 것입니다.동일한 열 이름을 사용하여 다른 테이블의 여러 필드 선택/결합
내가 볼 수 있도록 내 테이블의 기본 버전을 "그려 보겠습니다".
keyTable
-----------------------------------------
| uaID | userID | key | appName |
|---------------------------------------|
| 1 | 7 | ABC01 | Physics |
| 2 | 9 | DEF20 | Geometry |
| 3 | 12 | XJG14 | Biology |
| 4 | 19 | DAF09 | Chemistry |
| 5 | 27 | KYT78 | Algebra |
| 6 | 29 | PLF43 | Statistics|
| 7 | 34 | COG89 | Geology |
| 8 | 45 | HYL72 | Art |
| 9 | 48 | TSK45 | History |
| 10 | 53 | BBS94 | GeoChem |
| 11 | 59 | DOD10 | BioChem |
| 12 | 27 | HKV62 | Music |
-----------------------------------------
dataTable01
-----------------------------------------------
| uaID | sector | subSector | topic |
|---------------------------------------------|
| 2 | circle | volumn | measure |
| 7 | triangle | hypotenuse |pythagoras |
| 8 | square | | |
| 11 | triangle | hypotenuse |pythagoras |
-----------------------------------------------
dataTable02
---------------------
| uaID | topic |
|-------------------|
| 1 | door |
| 3 | window |
| 9 | porch |
| 12 | |
---------------------
dataTable03
-----------------------------------------------
| uaID | sector | subSector | topic |
|---------------------------------------------|
| 4 | cat | feline | kitty |
| 5 | dog | canine | rover |
| 6 | kangaroo | marsupial | jack |
| 10 | bunny | leporidae | peter |
-----------------------------------------------
users
------------------------------------------------------------------------
| userID | Title | firstName | lastName | email |
|----------------------------------------------------------------------|
| 7 | Dr | Melissa | Smith | [email protected] |
| 9 | Mr | Bob | Andrews | [email protected] |
| 12 | Miss | Clare | Greco | [email protected] |
| 19 | Mr | Dan | Fonseca | [email protected] |
| 27 | Mr | Matt | Jones | [email protected] |
| 29 | Mr | Chris | Nimmo | [email protected] |
| 34 | Mrs | Lisa | Araujo | [email protected] |
| 45 | Miss | Raquel | Bailey | [email protected] |
| 48 | Dr | Steven | Dowd | [email protected] |
| 53 | Prof | Roger | Hesp | [email protected] |
| 59 | Prof | Sally | Bryce | [email protected] |
| 65 | Mrs | Elena | Eraway | [email protected] |
------------------------------------------------------------------------
그리고 이것은 내가 최종 결과로 달성하기 위해 노력하고 무엇을 : 나는 실행하여이를 달성하려고하고
-------------------------------------------------------------------------------------------------------------------------------
| uaID | key | appName | sector | subSector | topic | title | firstName | lastName | email |
|-----------------------------------------------------------------------------------------------------------------------------|
| 1 | ABC01 | Physics | | | door | Dr | Melissa | Smith | [email protected] |
| 2 | DEF20 | Geometry | circle | volumn | measure | Mr | Bob | Andrews | [email protected] |
| 3 | XJG14 | Biology | | | window | Miss | Clare | Greco | [email protected] |
| 4 | DAF09 | Chemistry | cat | feline | kitty | Mr | Dan | Fonseca | [email protected] |
| 5 | KYT78 | Algebra | dog | canine | rover | Mr | Matt | Jones | [email protected] |
| 6 | PLF43 | Statistics| kangaroo | marsupial | jack | Mr | Chris | Nimmo | [email protected] |
| 7 | COG89 | Geology | triangle | hypotenuse |pythagoras | Mrs | Lisa | Araujo | [email protected] |
| 8 | HYL72 | Art | square | | | Miss | Raquel | Bailey | [email protected] |
| 9 | TSK45 | History | | | porch | Dr | Steven | Dowd | [email protected] |
| 10 | BBS94 | GeoChem | bunny | leporidae | peter | Prof | Roger | Hesp | [email protected] |
| 11 | DOD10 | BioChem | triangle | hypotenuse |pythagoras | Prof | Sally | Bryce | [email protected] |
| 12 | HKV62 | Music | | | | Mr | Matt | Jones | [email protected] |
-------------------------------------------------------------------------------------------------------------------------------
:
$sql = "SELECT keyTable.uaID, keyTable.userID, keyTable.key,
keyTable.appName, dataTable01.sector, dataTable01.subSector,
dataTable01.topic, dataTable02.topic, dataTable03.sector,
dataTable03.subSector, dataTable03.topic, users.title,
users.firstName, users.lastName, users.email
FROM keyTable
LEFT OUTER JOIN dataTable01 ON keyTable.uaID = dataTable01.uaID
LEFT OUTER JOIN dataTable02 ON keyTable.uaID = dataTable02.uaID
LEFT OUTER JOIN dataTable03 ON keyTable.uaID = dataTable03.uaID
LEFT OUTER JOIN users ON keyTable.userID = users.userID";
을 나는 모든 keyTable
데이터를 얻을 수 . 나는 모든 사용자 데이터를 바로 얻을 수 있습니다. dataTable03
데이터도 모두 표시되지만 결과에 dataTable01
또는 dataTable02
의 데이터가 표시되지 않습니다. dataTable03
에 대한 호출을 생략하면 dataTable02
의 모든 관련 데이터가 표시되지만 dataTable01
의 데이터는 표시되지 않습니다. users
테이블에 대한 호출이 끝나고 항상 정상적으로 표시됩니다. 데이터 테이블에서 일치하는 필드 이름과 관련된 문제입니다. 언급 된 데이터가 누락 된 상태에서 오류가 전혀 발생하지 않고 프로세스가 완료됩니다. 나는 다른 JOINS - 내부 조인, 외부 조인, 외부 조인을 시도했습니다. 분명히이를 달성하는 방법이 있어야하지만이 특정 문제에 대한 웹 참조를 찾을 수 없습니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?
입니다 원하는 결과가 입력 테이블의'topic' 컬럼에있을 때. 또한 왜'dataTable02'에'sector'와'subSector' 컬럼이 빠져 있는지 궁금합니다. 모든 데이터 테이블이 같은 컬럼을 가지고 있다고 말한 것 같아요. – Barmar
내 예제 결과 테이블을 "그리는"때 실수를했기 때문에 Porch가 잘못된 위치에있었습니다. 필자는 테이블이 모두 동일한 구조/내용 일 필요는 없다는 것을 분명히 알기를 기대했습니다.이 테이블은 예제 테이블이라는 것을 기억하십시오. 이들이 모두 동일하다면 하나의 데이터 테이블을 사용하고 여러 테이블을 사용하는 대신 uaID를 통해이를 참조하는 것이 더 효율적입니다. – Cassandra
추신 - 당신이 거기에 추가 한 바이올린을 사랑해.내일 진짜 상황에 대한 답을 적용하고 어떻게 진행되는지 알려 드리겠습니다.하지만 두 가지 방법 모두를 통해 피들 쇼가 진행될 것으로 기대합니다! 매우 감사. – Cassandra