Frage

Ich mag die Ergebnisse in einer GROUP_CONCAT Funktion bestellen. Das Problem ist, dass die Auswahl in der GROUP_CONCAT-Funktion ist eine weitere Funktion, wie folgt aus (Fantasie wählen):

SELECT a.name,
    GROUP_CONCAT(DISTINCT CONCAT_WS(':', b.id, c.name) ORDER BY b.id ASC) AS course
FROM people a, stuff b, courses c
GROUP BY a.id

Ich mag ein Ergebnis erhalten, wie (von b.id bestellen):

michael    1:science,2:maths,3:physics

, aber ich erhalte:

michael    2:maths,1:science,3:physics

Wer weiß, wie ich hier durch b.id in meiner Group_concat bestellen kann?

War es hilfreich?

Lösung

Wenn jemand Sorgen, ich denke, ich eine Lösung gefunden für zumindest ein ähnliches Problem.

http://mahmudahsan.wordpress.com/2008 / 08/27 / mysql-the-Group_concat-Funktion /

select GROUP_CONCAT(columnName order by someColumn SEPARATOR '|') from tableName where fieldId = p.id

Die Reihenfolge vergeht im Group_concat VOR dem Separator, wenn es einen gibt.

Andere Tipps

Ich weiß, das wirklich alt, aber gerade jetzt war ich auf der Suche nach einer Antwort und @ korny Antwort gab mir die Idee für diesen:

SELECT a.name,
GROUP_CONCAT(DISTINCT CONCAT_WS(':', b.id, c.name) 
             ORDER BY CONCAT_WS(':', b.id, c.name) ASC) AS course
FROM people a, stuff b, courses c
GROUP BY a.id

(Und es funktioniert für mich, wenn das nicht klar war :-))

Ich weiß nicht, von einem Standard-Weg, dies zu tun. Diese Abfrage funktioniert, aber ich fürchte, es kommt nur darauf an einigem Implementierungsdetail:

SELECT a_name, group_concat(b_id)
FROM (
    SELECT a.name AS a_name, b.id AS b_id
    FROM tbl1 a, tbl2 b
    ORDER BY a.name, b.id) a
GROUP BY a_name

Keine Notwendigkeit für Subselects.

SELECT people.name, CONCAT_WS(":", stuff.id, courses.name) data
FROM people, stuff, courses
ORDER BY stuff.id, people.name
SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id)
FROM book_mast
GROUP BY pub_id
ORDER BY GROUP_CONCAT(DISTINCT cate_id) ASC;
SELECT generated.name, GROUP_CONCAT(generated.data)
FROM (
    SELECT people.name, CONCAST_WS(":", stuff.id, courses.name) data
    FROM people, stuff, courses
    ORDER BY stuff.id, people.name
) generated
GROUP BY generated.name
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top