Felder verbinden, group by

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

  • Felder verbinden, group by

    Hallo,

    Ich habe bereits google bemüht, aber ich scheine nicht die richtigen Suchworte zu finden. Nun zu meinem Problem:
    Ich habe 3 Tabellen :
    Tabelle a: Namen, Adresse usw.
    Tabelle b: Rufnummern
    Tabelle c: Mapping Rufnummern -> Namen

    Da Namen mehrer Rufnummern besitzen kann, aber auch eine Rufnummer mehreren namen zugeordnet sein kann, habe ich hier eine n:n verbindung über eine dritte Tabelle gebaut.

    Nun möchte sich eine Liste ausgeben :
    select a.name, b.rufnummer ... join ... join ... where 1;

    Als Antwort bekomme ich dann eine Liste:
    Mark 56678
    Tobias 45567
    Tobias 78945
    ....

    Wie bekomme ich es hin das der Eintrag Tobias nicht doppelt auftaucht, sondern die beiden Rufnummern verbunden werden :
    Mark 56678
    Tobias 45567;78945
    ....

    Gibt es hier ein Lösung direkt in SQL ? Bisher laufe ich die Liste nochmal durch und verbinde mit PHP die beiden Einträge. Ist etwas unschön das die Gesamtzahl der namen nicht stimmt und ich bei einem Limit teilweise weniger Ergebnisse pro seite angezeigt bekomme.

    doerfnix

  • #2
    Hallo,

    das geht mit der SQL Aggregatfunktion group_concat()

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Super, genau das was ich gesucht habe.

      Vieleicht noch ne kleine Frage zu meiner Tabelle :

      Tabelle a: Namen
      Tabelle b: Festnetz Rufnummer, Mobilfunk-Rufnummer
      Tabelle c: Mapping Namen ID -> Rufnummern ID und selector 'festnetz oder Mobil',

      Abfrage bisher:
      select a.*, b.mobil, b.festnetz, c.type from a left join ... left join ....

      In PHP werte ich dann den Rufnummern Type aus und Zeige entsprechend die Festnetzrufnummer oder Mobilfunkrufnummer an.

      Gibt es auch ne möglichkeit mit SQL direkt die entsprechende Mobil oder festnetzrufnummer zurückzugeben ?

      Leider ist es aus anderen Gründen nicht möglich tabelle b anders aufzubauen.

      doerfnix

      Kommentar


      • #4
        Du kannst gerne 2 mal mit unterschiedlichen Bedingungen auf die Telefonnummerntabelle joinen, dann hast du Festnetz und Mobil in getrennten Spalten.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          OK, hier habe ich dann doch nochmal selber geschaut und dazu
          CASE .. WHEN .. THEN .. ELSE .. END

          gefunden

          Danke für alle die sich gedanken gemacht haben

          Kommentar

          Lädt...
          X