आप एक प्रश्न में ऐसा नहीं कर सकते हैं - आपके पास जो प्रश्न है उसे लेने के लिए सबसे अच्छा है और आपको आवश्यक डेटा संरचना प्राप्त करने के लिए परिणामी उत्तर पोस्ट-प्रोसेस करें।
आगे विस्तार करने के लिए - कोई भी SQL क्वेरी डेटा की केवल दो आयामी सरणी लौटा सकती है - कॉलम के लिए एक आयाम, और मिलान पंक्तियों के लिए एक। आपके मामले में आप वास्तव में जो चाहते हैं वह एक त्रि-आयामी तालिका की तरह है।
यह भी ध्यान दें कि लिखित रूप में आपकी क्वेरी पर सभी news
वापस आ जाएंगे प्रत्येक लेख के खिलाफ प्रत्येक टिप्पणी के लिए बार-बार डेटा। यह डेटाबेस सर्वर से बैंडविड्थ और संसाधन का अक्षम उपयोग है।
इसे इस तरह करना शायद अधिक कुशल है (छद्म कोड में):
SELECT * FROM news
...
foreach ($rows as $row) {
$row['comments] = array();
$news[$row['id']] = $row;
}
SELECT * FROM comments
...
foreach ($rows as $row) {
$news[$row['news_id']]['comments'][] = $row;
}
पहली क्वेरी में सभी समाचार लेख मिलते हैं और उन्हें एक सरणी में रखते हैं। दूसरी क्वेरी टिप्पणियों को प्राप्त करती है, और प्रत्येक समाचार लेख की संरचना के भीतर एक अलग सरणी जमा करती है।