Ich habe drei Tabellen:
table "package"
-----------------------------------------------------
package_id int(10) primary key, auto-increment
package_name varchar(255)
price decimal(10,2)
table "zones"
------------------------------------------------------
zone_id varchar(32) primary key (ex of data: A1, Z2, E3, etc)
table "package_zones"
------------------------------------------------------
package_id int(10)
zone_id varchar(32)
Was ich zu tun versuche, ist die Rückgabe aller Informationen in der Pakettabelle PLUS eine Liste der Zonen für dieses Paket. Ich möchte, dass die Liste der Zonen alphabetisch sortiert und durch Kommata getrennt ist.
Die Ausgabe, nach der ich suche, sieht also etwa so aus...
+------------+---------------+--------+----------------+
| package_id | package_name | price | zone_list |
+------------+---------------+--------+----------------+
| 1 | Red Package | 50.00 | Z1,Z2,Z3 |
| 2 | Blue Package | 75.00 | A2,D4,Z1,Z2 |
| 3 | Green Package | 100.00 | B4,D1,D2,X1,Z1 |
+------------+---------------+--------+----------------+
Ich weiß, dass ich in PHP etwas mit der Präsentationsebene machen könnte, um das gewünschte Ergebnis zu erzielen. Das Problem ist, ich möchte in der Lage sein, zone_list ASC oder DESC zu sortieren oder sogar" WHERE zone_list LIKE" und so weiter zu verwenden. Um das zu tun, muss ich dies in MYSQL tun.
Ich habe keine Ahnung, wie ich das überhaupt angehen soll. Ich habe versucht, eine Unterabfrage zu verwenden, aber sie beschwert sich ständig über mehrere Zeilen. Ich habe versucht, die mehreren Zeilen in eine einzige Zeichenkette zu konkaten, aber offensichtlich mag MySQL das nicht.
Vielen Dank im Voraus.
UPDATE!
Hier ist die Lösung für alle, die daran interessiert sind.
SELECT
`package`.*,
GROUP_CONCAT(`zones`.`zone` ORDER BY `zones`.`zone` ASC SEPARATOR ',' ) as `zone_list`
FROM
`package`,
`package_zones`
LEFT JOIN
(`zones`,`ao_package_zones`) ON (`zones`.`zone_id` = `package_zones`.`zone_id` AND `package_zones`.`package_id` = `package`.`package_id`)
GROUP BY
`ao_package`.`package_id`