여러 개의 다른 테이블의 데이터를 결합하기 위해 복수 LEFT JOIN
의 복합 MySQL 쿼리를 작성하고 있습니다.MySQL 결과를 배열로 그룹화하십시오.
$public_query =
"SELECT * FROM `wsat_ib`
LEFT JOIN wp_usermeta ON wsat_ib.user_id = wp_usermeta.user_id
LEFT JOIN wpjb_resume ON wsat_ib.user_id = wpjb_resume.user_id
LEFT JOIN wpjb_field_value ON wpjb_resume.id=wpjb_field_value.job_id
LEFT JOIN wpjb_application ON wpjb_application.user_id = wsat_ib.user_id
WHERE wp_usermeta.meta_key = 'target_employer'
AND wp_usermeta.meta_value = 'public'
AND wpjb_resume.is_active =1
";
내 문제 : 테이블 wp_usermeta이 같은 USER_ID에 대해 여러 행이있을 수 있습니다. 예를 들어 사용자 (user_id = 5)는 'target_employer'인 meta_key 필드가있는 wp_usermeta 테이블에 하나 이상의 행을 가질 수 있습니다. 확실하지 않은 경우 행이 다음과 같이 보일 수 있습니다.
id user_id meta_key meta_value
1 5 target_employer 13
2 5 target_employer 53
3 79 target_employer 21
내 질문 : 내 결과 개체 중 하나의 배열로 wp_usermeta에서 각 일치하는 행을 반환 할 수있는 방법이 있나요? 그래서 var_dump()
는 다음과 같이 보일 것이다 :
object(stdClass)#2906 (14) {
["user_id"]=>
string(4) "5"
["firstname"]=>
string(6) "Bilbo"
["lastname"]=>
string(3) "Baggins"
...
["target_employer"]=>
array(2) {
[0]=>13,
[1]=>53
}
}
UPDATE : @bpanulla : 나는 MySQL의가 배열을 반환 할 수 있다고 생각하지 않습니다
"SELECT wsat_ib.user_id, wpjb_resume.firstname, wpjb_resume.lastname, wsat_ib.overall_score, wsat_ib.account_score, wsat_ib.econ_score, wsat_ib.math_score, wsat_ib.logic_score, wsat_ib.fsanaly_score, wsat_ib.corpval_score, wsat_ib.end_time, GROUP_CONCAT(wp_usermeta.meta_value) AS target_employers, wpjb_field_value.value AS school, wpjb_application.job_id
FROM `wsat_ib`
LEFT JOIN wp_usermeta ON wsat_ib.user_id = wp_usermeta.user_id
LEFT JOIN wpjb_resume ON wsat_ib.user_id = wpjb_resume.user_id
LEFT JOIN wpjb_field_value ON wpjb_resume.id=wpjb_field_value.job_id
LEFT JOIN wpjb_application ON wpjb_application.user_id = wsat_ib.user_id AND wpjb_application.field_id=3
WHERE (wp_usermeta.meta_key = 'target_employer'
AND wp_usermeta.meta_value = 'public'
AND wpjb_resume.is_active =1)
GROUP BY user_id
";
"일치하는 각 행을 wp_usermeta에서 결과 개체 중 하나의 배열로 반환 할 수있는 방법이 있습니까?" 아닙니다. SQL은 결과 셀을 원자 적이어야합니다. 배열이 없습니다. user_id를 키로 사용하여 동일한 사용자의 값을 배열에 누적 할 수 있습니다. – user4035
@ user4035 설명 된대로하는 방법을 보여줄 수 있습니까? 내가하고 싶은 것처럼 들리네. – emersonthis