implode() Alias in MySQL

Parantatatam

mag Cookies & Kekse
Hallo,

ich bastle gerade gerade mit VIEWs in MySQL und habe mir jetzt überlegt, ob es nicht auch eine Funktion oder Anweisung gibt mit der man den Inhalt mehrerer Datensätze zusammenfügen kann (ähnlich implode() in PHP). Weiß davon jemand was?
 
Danke, GROUP_CONCAT() ist genau das was ich suche, nur leider wird bei mir im Moment in der Spalte, in der dieser String stehen sollte, folgendes angezeigt:
[BLOB - 20 Bytes]
Was hat das zu bedeuten?

So sieht meine Anfrage aus:
Code:
SELECT
  `dat_teacher`.`firstname`                 AS `firstname`,
  `dat_teacher`.`lastname`                  AS `lastname`,
  `dat_teacher`.`short`                     AS `short`,
  `dat_teacher`.`type`                      AS `type`,
  `dat_subject`.`subject`                   AS `subject`,
  `dat_teacher`.`id`                        AS `teacherID`,
  GROUP_CONCAT(DISTINCT `dat_subject`.`id`) AS `subjectID`
FROM
  `dat_teacher`,
  `dat_subject`,
  `rel_teacher_subject`
WHERE `dat_teacher`.`id` = `rel_teacher_subject`.`id_teacher`
AND   `dat_subject`.`id` = `rel_teacher_subject`.`id_subject`
GROUP BY `dat_teacher`.`short`
 
Hallo,

was versuchst du denn mit dieser Abfrage zu erreichen? Warum gruppierst du nicht nach dem Primärschlüssel? Was erwartest du, dass in der Spalte subject rauskommt? Warum willst du die Fremdschlüssel konkatenieren?

Grüße, Matthias
 
Es ist egal, ob ich nun nach der Spalte id (Primärschlüssel) oder nach der Spalte short sortiere, da beide jeden Wert nur einmal beinhalten dürfen. Ich erwarte, dass in der Spalte subjectID die Menge aller Unterrichtsfächer-IDs die einem Lehrer zugeordnet werden mit Kommata getrennt dargestellt wird, damit ich diese später in PHP per explode() in einen Array umwandeln kann.

PS: Wo soll ich das CHAR() verwenden? Um den Spaltenname oder um GROUP_CONCAT()? Es geht nämlich beides nicht.
 
Hi,

ich vermute, er möchte ausgeben lassen, welche Fächer die einzelnen Lehrer unterrichten. Warum er dann allerdings die Spalte "subject" in dieser gruppierten Abfrage auswählt (da bekommst Du irgendeinen der möglichen Werte) und die IDs konkateniert, statt die Werte aus subject ist mir auch schleierhaft.

@einfach_nur_crack: "Geht nicht" ist keine brauchbare Fehlerbeschreibung. Du solltest auch mal ins Manual schauen.

LG
 
Es ist egal, ob ich nun nach der Spalte id (Primärschlüssel) oder nach der Spalte short sortiere, da beide jeden Wert nur einmal beinhalten dürfen.
Nach dem Primärschlüssel gruppieren sollte allerdings schneller sein.

Ich erwarte, dass in der Spalte subjectID die Menge aller Unterrichtsfächer-IDs die einem Lehrer zugeordnet werden mit Kommata getrennt dargestellt wird, damit ich diese später in PHP per explode() in einen Array umwandeln kann.
Ist das nicht etwas umständlich so? Wenn du die Gruppierung weglässt, erhältst du doch für jedes Unterrichtsfach eine eigene Zeile im Ergebnis, was einfacher handzuhaben sein sollte.

Grüße, Matthias
 
"Geht nicht" ist die Zusammenfassung dafür gewesen, dass es einerseits, wenn ich es um GROUP_CONCAT() verwende \b in einigen Zellen stehen habe und in den restlichen nichts, andererseits bedeutet es aber, dass ich das Gleiche wie vorher angezeigt bekomme. Des Weiteren ist zu sagen, dass ich seit mehr als einer Stunde jetzt schon in der MySQL Manual suche, aber leider nichts finde. Ich gehöre nichts zu den Leuten, die zu faul sind die Suche oder die Dokumentation zu verwenden. Und zu den Datensätzen: ich rufe sowohl die Datensätze ab, als auch die IDs. Mir ist dabei aufgefallen, dass GROUP_CONCAT() nur bei Integerwerten Probleme hat.
 
Hi,

Des Weiteren ist zu sagen, dass ich seit mehr als einer Stunde jetzt schon in der MySQL Manual suche, aber leider nichts finde.

ich habe Dir extra einen Link gepostet. Du sollst casten. Das hat mit der Funktion CHAR() nichts zu tun.

Was meinst Du mit "ich rufe sowohl die Datensätze ab, als auch die IDs"? Du rufst für jeden Lehrer einen Datensatz zusammen mit einer Liste der Subject-IDs ab. Wenn Du tatsächlich (wofür auch immer) die IDs haben willst, okay. Was soll aber die Spalte "subject" in der Auswahl? Die ergibt absolut keinen Sinn.

LG
 

Neue Beiträge

Zurück