Czy poniżej (SQL Fiddle
) dają wyniki, których szukasz. Zawinąłem związek, abym mógł następnie sortować według name
pole. Jeśli nie chcesz tego w ten sposób, możesz go usunąć lub posortować na DistCon
zamiast tego.
SELECT * FROM
(
SELECT GROUP_CONCAT(APA_T.district) AS DistCon, t.name
FROM tbl_activity AS t
JOIN tbl_activity_package AS ap ON t.id = ap.id_activity
JOIN
(
SELECT DISTINCT apa.district AS district,
(
SELECT s1.id_activity_package
FROM tbl_activity_package_address s1
WHERE apa.district = s1.district
ORDER BY s1.id DESC
LIMIT 1
) AS idActivityPackage
FROM
tbl_activity_package_address apa
ORDER BY apa.district
) AS APA_T
ON ap.id = APA_T.idActivityPackage
GROUP BY t.name
UNION
SELECT GROUP_CONCAT(apa.district), t.name
FROM tbl_activity AS t
JOIN tbl_activity_package AS ap ON t.id = ap.id_activity
JOIN tbl_activity_package_address AS apa ON ap.id = apa.id_activity_package
WHERE t.name NOT IN
(
SELECT DISTINCT t.name
FROM tbl_activity AS t
JOIN tbl_activity_package AS ap ON t.id = ap.id_activity
JOIN
(
SELECT DISTINCT apa.district AS district,
(
SELECT s1.id_activity_package
FROM tbl_activity_package_address s1
WHERE apa.district = s1.district
ORDER BY s1.id DESC
LIMIT 1
) AS idActivityPackage
FROM
tbl_activity_package_address apa
) AS APA_T
ON ap.id = APA_T.idActivityPackage
)
GROUP BY t.name
) AS Mm
ORDER BY Mm.name