MySQL Implode() Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL Implode() Funktion

    Hi,

    Kenn jemdan ne Nöglichkeit ein Subselect mit Kommas getrennt zu liefern. Ich habe es schon mit CONCAT_WS() versucht, scheint aber mit nem Subselect nicht zu funzen

    Meine Tabellen:

    raum: raum_nr, zuständig, bemerkung ...
    raum_hat_fachrichtung: raum_nr, fach_id
    fachrichtung: fach_id, beschreibung

    Ich möchte zunächst alle Raume auflisten und dabei die Fachrichtungen mit komma getrennt in jeder Zeile anzeigen.

    Mein Ansatz:

    Code:
    SELECT raum.*,
      CONCAT_WS(",",
      SELECT fach_name
      FROM raum_hat_fachrichtungen
        LEFT JOIN fachrichtungen USING ( fach_id )
      )
    FROM raum;
    Weiß jemand rat ?
    Zuletzt geändert von zonthor; 24.04.2006, 18:37.

  • #2
    Hmm

    bist du sicher dass es das ist was du willst ? Die darstellung ist doch
    auf db-ebene irrelevant. Was bringt dich denn dazu ne commaseparierte liste
    zu wollen ?

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Den Vorteil den ich sehe ist das Ich pro Raum nur ein Ergebnis bekomme.

      Ich brauch bei der Auflistung der Räme keine Eigensändigen attribute für die Fachrichtungen.

      Würde ich die Tabellen komplett verküpfen würde würde ich pro Raum 1-5 Ergebnisse bekommen, die ich dann per Script zu einem zusammenbasteln muss. So brauch ich das Ergebnis nur einmal zu durchlaufen und brauch keine subschleife, die erkennt welcher Raum welche Fachrichtungen hat.

      Kommentar


      • #4
        Re: MySQL Implode() Funktion

        @zonthor: Schau mal unter den Aggregat-Funktionen ... da gibt's ein GROUP_CONCAT() ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Hey Danke, das war genau das was ich gesucht habe

          hier meine Lösung:

          Code:
          SELECT raum.*,GROUP_CONCAT(DISTINCT fachrichtungen.fach_name SEPARATOR ', ')
          FROM raum_hat_fachrichtungen
              LEFT JOIN raum USING ( raum_nr )
              RIGHT JOIN fachrichtungen USING ( fach_id )
              GROUP BY raum_nr;

          Kommentar

          Lädt...
          X