में परिणाम देता है मैं कई अलग-अलग तालिकाओं से डेटा को गठबंधन करने के लिए एकाधिक 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 के साथ) तालिका में wp_usermeta तालिका में एक पंक्ति हो सकती है: meta_key जो 'target_employer' है। यदि यह स्पष्ट नहीं है, तो पंक्तियां इस तरह दिख सकती हैं।
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
}
}
अद्यतन: @bpanulla: असली (unsimplified क्वेरी) यहाँ है ...
"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 से प्रत्येक मिलान पंक्ति को मेरी परिणाम वस्तुओं में से एक में सरणी के रूप में वापस कर सकता हूं?" नहीं, एसक्यूएल को परिणाम कोशिकाओं को परमाणु होने की आवश्यकता है। कोई सरणी नहीं उपयोगकर्ता के माध्यम से एक कुंजी के रूप में, आप एक ही उपयोगकर्ता के लिए मानों को सरणी में जमा कर सकते हैं। – user4035
@ user4035 क्या आप एक उदाहरण दे सकते हैं कि आपने जो वर्णन किया है उसे कैसे करें? ऐसा लगता है कि मैं क्या करना चाहता हूं। – emersonthis