Ersatz für GROUP_CONCAT(DISTINCT...)

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

  • Ersatz für GROUP_CONCAT(DISTINCT...)

    Hallo, ich führe folgenden Query aus:
    Code:
    SELECT
      events.`Titel` , ort.`Ort` ,
      GROUP_CONCAT( DISTINCT cat.`Kategorie` ) AS `Kategorie`,
      GROUP_CONCAT( DISTINCT link.`Link` ) AS `Link`
    
    FROM 
    `events`events
      LEFT JOIN `events_kategorie` cat
        ON cat.`Events_ID` = events.`ID`
      LEFT JOIN `events_link` link
        ON link.`Events_ID` = events.`ID`
      LEFT JOIN `events_ort` ort
        ON ort.`ID` = events.`Ort_ID`
    
    GROUP BY events.`Titel`
    Und erhalte dadurch als Beispiel diesen Output:
    __Titel___|_____Ort____|__Kategorie___|____Link_____|
    Titel 1___|__Location 1__|__cat 1,cat 2__|__link1,link2__|
    Titel 2 ___|__Location 2__|__cat 3,cat 4__|__link2,link3__|

    Das ist genau, was ich erreichen will. Eine Tabellenstruktur die in meinen Augen den Normalformen entspricht und außerdem in PHP mit einer Query die nötigen Werte ausgeben würde.

    Das Problem besteht dadrin, dass die MySQL-Function GROUP_CONCAT(DISTINCT...) erst seit der Version 4.1 vorhanden ist, ich habe leider auf meinem Webspace nur 3.23.57.
    Deshalb die Frage:
    Kann ich etwas ähnliches mit einer Query erhalten? Mehrere Queries wären kein Problem, nur dachte ich, JOIN's wären schneller, besser...

    Vorschläge, die NF's besser umzusetzen sind auch willkommen!

  • #2
    Ich habe dasganze jetzt mal verglichen, und komme zu dem Erstaunlichen Ergebnis, dass die Join-Variante sogar Langsamer ist! Um ganze 0.0083639240264893 Sekunden auf dem Localhost (in 41 von 50 Fällen war sie langsamer als eine while Schleife mit SELECT *, und dann in der Schleife nochmal 3 queries für Link, Kategorie und Ort)

    Kommentar


    • #3
      Also ... das ist so (ich gehe davon aus das Du ein halbwegs modernen Rechner einsetzt) erstmal kein signifikanter Geschwindigkeits unterschied ... der auf einen performance Vorteil eines bestimmten Statements spricht ... insbesondere nicht auf einem Multitasking-System ... !
      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

      Lädt...
      X