मेरा मानना है कि यही वह है जिसे आप ढूंढ रहे हैं, या आपको शुरू कर सकते हैं:
SELECT
t.therapist_name,
dl.day,
GROUP_CONCAT(DISTINCT dl.name SEPARATOR ',') AS locations
FROM
therapists t
LEFT JOIN days_location dl ON dl.therapist_id = t.id
LEFT JOIN location l ON dl.location_id = l.id
GROUP BY t.therapist_name, dl.day
therapists.id = 1
. के लिए यह आपको परिणाम देगा:
+----------------+-----------+-----------------------+
| therapist_name | day | locations |
+----------------+-----------+-----------------------+
| Therapist 1 | monday | Location 1,Location 2 |
| Therapist 1 | wednesday | Location 3 |
| Therapist 1 | friday | Location 1 |
+----------------+-----------+-----------------------+
यदि आपको day
को संयोजित करने की आवश्यकता है locations
. के साथ कॉलम के बाद एक साधारण CONCAT()
का उपयोग करें :
SELECT
therapist_name,
CONCAT(day, '(', locations, ')') AS locations
FROM (
SELECT
t.therapist_name,
dl.day,
GROUP_CONCAT(DISTINCT dl.name SEPARATOR ',') AS locations
FROM
therapists t
LEFT JOIN days_location dl ON dl.therapist_id = t.id
LEFT JOIN location l ON dl.location_id = l.id
GROUP BY t.therapist_name, dl.day
) t
GROUP BY therapist_name, locations
आउटपुट इस तरह दिखना चाहिए:
+----------------+-------------------------------+
| therapist_name | locations |
+----------------+-------------------------------+
| Therapist 1 | monday(Location 1,Location 2) |
| Therapist 1 | wednesday(Location 3) |
| Therapist 1 | friday(Location 1) |
+----------------+-------------------------------+
यदि आपको प्रत्येक चिकित्सक के लिए इसे एक पंक्ति में समूहित करने की आवश्यकता है, तो आप GROUP_CONCAT()
कर सकते हैं फिर से।
टिप्पणियों के बाद संपादित करें :
SELECT
therapist_name,
GROUP_CONCAT( CONCAT(day, '(', locations, ')') SEPARATOR ',' ) AS locations
FROM (
SELECT
t.therapist_name,
dl.day,
GROUP_CONCAT(DISTINCT dl.name SEPARATOR ',') AS locations
FROM
therapists t
LEFT JOIN days_location dl ON dl.therapist_id = t.id
LEFT JOIN location l ON dl.location_id = l.id
GROUP BY t.therapist_name, dl.day
) t
GROUP BY therapist_name
मैंने कोड का परीक्षण नहीं किया है, इसलिए ट्वीक करने के लिए कुछ छोटी गलतियां हो सकती हैं। एटीएम के परीक्षण का कोई तरीका नहीं है।