MightyMike: Geht das mit MySQL JOINS?

Beitrag lesen

Die Vorschläge, News und Links miteinander zu verjoinen, halte ich nicht für besonders hübsch.

ne bessere Idee? her damit! :o)

... enthält das Ergebnis dann für jeden Link auch die zugehörige News. Das heißt, bei 5 Links zur News hast du die News fünfmal im Ergebnis.

Das ist das Problem.

Wenn sich die Anzahl der abgefragten News im Rahmen hält, könnte eine zweite Abfrage mit WHERE ID_News IN (..., ..., ...) die zugehörigen Links ermitteln. Du müsstest dann bei Abfragen der Ergebnisdatensätze selbige anhand der News-ID den News zuordnen.

Das ist meine bisherige Lösung. Die Anzahl hält sich zwar in Grenzen, aber wenn ich den Code übersichtlicher schreiben kann, dann versuche ich das.

GROUP_CONCAT() (nicht in allen MySQL-Versionen verfügbar) verknüpft die durch die Gruppierung zusammengefassten Werte zu einem String, den man sich in der abfragenden Umgebung (z.B. PHP) am selbst gewählten Separator wieder aufsplitten lassen kann.

  

> SELECT ID, Text, GROUP_CONCAT(Links.Link SEPARATOR '||') AS Links  
> FROM News  
>   LEFT JOIN Links ON News.ID = Links.ID_News  
> GROUP BY News.ID  

Ich denke, damit komme ich auf den richtigen Weg. Habe schonmal ein bisschen probiert. Problem ist nun - wie generell bei JOINS, glaube ich - das nun nur solche News auftauchen, die auch tatsächlich Links haben. News ohne Links sind nun nicht mehr in der Ergebnistabelle enthalten. Kann ich irgendwie erzwingen, auf jeden Fall alle News im Ergebnis zu haben?