JOIN
. का उपयोग करके आप मनचाहा डेटा प्राप्त कर सकते हैं सबक्वेरी में एस। यदि आप केवल नाम चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
SELECT a.id, a.title,
(SELECT JSON_ARRAYAGG(au.name)
FROM article_author aa JOIN
author au
ON au.id = aa.author_id
WHERE a.id = aa.article_id
) as authors,
(SELECT JSON_ARRAYAGG(t.tag)
FROM article_tag art JOIN
tag t
ON art.tag_id = t.id
WHERE a.id = art.article_id
) as tags
FROM article a;
मुझे यकीन नहीं है कि आप आईडी और नाम दोनों के साथ कौन सी डेटा संरचना चाहते हैं। यदि आप प्रत्येक ऑब्जेक्ट में दो फ़ील्ड के साथ JSON ऑब्जेक्ट की एक सरणी चाहते हैं:
SELECT a.id, a.title,
(SELECT JSON_ARRAYAGG(JSON_OBJECT('name', au.name, 'id', au.id))
FROM article_author aa JOIN
author au
ON au.id = aa.author_id
WHERE a.id = aa.article_id
) as authors,
(SELECT JSON_ARRAYAGG(JSON_OBJECT('tag', t.tag, 'id', t.id))
FROM article_tag art JOIN
tag t
ON art.tag_id = t.id
WHERE a.id = art.article_id
) as tags
FROM article a;
यहां इस संस्करण के लिए एक db<>बेला है।