시나리오 : 내가 모든 정보 (20) 사용자를 선택하고 또한 그들이 가르치는 모든 언어로 자신의 교사 프로필을 선택해야
. 나는이 일을하려고하지만 그것은 mysql 경우에만 값 중첩 된 배열을 사용하여 값 배열을 반환하는 것, 그것을 할 방법이 무엇입니까?MySQL의 - 테이블에서 모든 선택하고 다른 테이블에서 관련 행을 선택
테이블 :
MY 코드
+------------------------------------------+
| users |
+------------------------------------------+
| id | firstname | email |
+------------------------------------------+
| 18 | Tom | [email protected] |
+------------------------------------------+
| 30 | Jerry | [email protected] |
+------------------------------------------+
| 25 | Butch | [email protected] |
+------------------------------------------+
+------------------------------------+
| teachers |
+------------------------------------+
| id | user_id | trial_lessons |
+------------------------------------+
| 10 | 18 | yes |
+------------------------------------+
| 26 | 30 | no |
+------------------------------------+
| 28 | 25 | no |
+------------------------------------+
+------------------------------------------+
| teacher_languages |
+------------------------------------------+
| id | teacher_id | language_text_id |
+------------------------------------------+
| 16 | 10 | 6 |
+------------------------------------------+
| 40 | 10 | 8 |
+------------------------------------------+
| 16 | 28 | 6 |
+------------------------------------------+
| 16 | 28 | 10 |
+------------------------------------------+
| 16 | 26 | 6 |
+------------------------------------------+
+-------------------+
| languages |
+-------------------+
| id | language |
+-------------------+
| 6 | English |
+-------------------+
| 8 | French |
+-------------------+
| 10 | Spanish |
+-------------------+
는 SO FAR
SELECT
users.*,
nationality.country AS country_of_nationality,
residence.country AS country_of_residence,
FROM
users
LEFT JOIN
text_countries AS nationality
ON
users.nationality = nationality.iso_code_2
AND
nationality.language_id = ?
LEFT JOIN
text_countries AS residence
ON
users.residence_country = residence.iso_code_2
AND
residence.language_id = ?
ORDER BY
users.created_at
DESC LIMIT
20
예상 결과는
[0] =>
[user_id] => 18
[firstname] => 'Tom'
[teacher_id] => 10
[languages] =>
[language] => 'English'
[language] => 'French'
[1] =>
[user_id] => 30
[firstname] => 'Jerry'
[teacher_id] => 26
[languages] =>
[language] => 'English'
[2] =>
[user_id] => 25
[firstname] => 'Butch'
[teacher_id] => 28
[languages] =>
[language] => 'English'
[language] => 'Spanish'
지금까지 코드를 보여주고 도움을 요청하기 전에 직접 시도해보십시오. – Adam
MySQL은 다차원 레코드를 반환하지 않습니다. 모든 기록은 1-D입니다. 대부분의 관계형 DB는 그렇게합니다. 언어 데이터가 필요한 방식에 따라 여러 값을 1 열로 수집하려면 GROUP_CONCAT을 사용할 수 있습니다. – Rudie
나는 이미했는데, 지금까지 가지고있는 코드는 여러 테이블에서부터 계산 되었기 때문에 매우 길다. 그리고 대부분이 코드라면 질문을 게시하지 않을 것이다. 건배! – CupOfJoe