verwendetes Datenbanksystem: SQL Server 2005
SELECT siteTag FROM site_tag WHERE UserID='" + UserID + "' GROUP BY siteTag
Funktioniert ohne Probleme.
SELECT siteTag,siteTagID FROM site_tag WHERE UserID='" + UserID + "' GROUP BY siteTag
Funktioniert nicht:
Column 'site_tag.siteTagID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Kann mir jemand erklären warum? Ich bräuchte die siteTagID auch, möchte aber dass immer nur ein siteTag angezeigt wird (via Group BY).
Tabelleninhalt ist z.B.:
1,test1,siteid1,uid1
2,test2,siteid1,uid1
3,test1,siteid2,uid1
Danke!
Hallo Paulo,
das liegt daran, dass du nur die SiteTag in der Group BY Clause hast.
Wie soll da so gehen... nehmen wir mal an, du hast folgende tabelle.
id test sitetagid sitetag
1, test1 siteid1 uid1
2, test2 siteid1 uid1
3, test1,siteid2 uid1
Mit der GroupBy clause gruppiert er dir nun alle uid1 zusammen d.h du hast nur noch einen Datensatz. Bei der Siteid weiss er aber nicht was er machen soll. Denn da Hat er verschiedene Werte drinnen, er kann aber nur einen im Resultat anzeigen. Deshalb bekommst du die Meldung, dass die SiteID in einer Aggregatfunktion drinnen sein muss, damit man dieses Problem nicht hat.
Solltest du also immer die größte (MAX) oder kleinste (MIN) SiteID brauchn, so kannst du das feld einfach wie folgt in die aggregatfunktion einfügen.
Guckst du:
SELECT siteTag,MAX(siteTagID) FROM site_tag WHERE UserID='" + UserID + "' GROUP BY siteTag
mfg
MichlG