Vinzenz Mai: Group By

Beitrag lesen

Hallo,

Folgende SQL Abfrage geht in MySQL (auch wenn es vielleicht nicht sauber ist)

SELECT
                A.InstallElementID, A.InternalValue, A.TabsJobTkID,
                C.English AS GuiName

Welche der Spalten, über die Du nicht gruppierst enthält unterschiedliche Werte je Datensatz. Kann ja nur C.English sein, die anderen sollten direkt von A.InstallElementID abhängen.


> So bekomme ich 30 Datensätze zurück  
  
  

> Im MS SQL Server kommt hier natürlich eine Fehlermeldung wegen der Group By  
  
In allen anderen SQL-Dialekten als dem von MySQL fliegt Dir das Statement um die Ohren. Sogar in MySQL bei entsprechenden Optionen :-)  
  
[...]  
  

> Dann wäre es syntaktisch wohl in Ordnung aber ich bekomme 120 Datensätze zurück  
> Kann man diese SQL Abfrage irgendwie umstellen damit ich trotzdem nur die 30 Datensätze wie im ersten Beispiel bekomme?  
  
Wirf die Spalten raus, die unterschiedliche Werte je Gruppe aufweisen. An deren Wert kannst Du ja nicht interessiert sein, weil der Wert unterschiedlich ausfallen kann.  
  
Bessere Idee als Joins und GROUP BY:  
Ermittle den GuiName \*nicht\* über Joins sondern über ein Subselect.  
  
Prüfe die Performance beider Varianten (wenn diese das gewünschte Ergebnis liefern).  
  
  
  
Freundliche Grüße  
  
Vinzenz