Mailinglisten-Archive |
Hi Sascha, > Problem: > Es existieren zwei Tabellen (Benutzer, Artikel) mit je 2000 > Datensätzen. Nun soll ein Query erstellt werden das die Benutzer > sortiert nach Arikelanzahl darstellt. > > Tabellenbeispiel: > Benutzer > ID----NAME > 1 Jan > 2 Peter > 3 Klaus > 4 Fritz > 5 Karl > > Artikel: > ID----NUTZER-----NAME > 1 2 Schere > 2 1 Messer > 3 2 Gabel > 4 3 Löffel > 5 5 Rasenmäher > 6 2 Auto > 7 1 Schnuller > > Soll-Ausgabe: > Peter (3 Artikel) > Jan (2 Artikel) > Karl (1 Artikel) > Klaus (1 Artikel) > Fritz (0 Artikel) select benutzer.name, benutzer.id, count(artikel) as st from benutzer, outer artikel where artikel.id = benutzer.id group by benutzer.id order by st desc Wie gesagt, ungetestet! Mit der Syntax vom OUTER bin ich mir auch nicht ganz sicher! Sieh mal im Handbuch unter "left join" nach. Du brauchst das, da Du sonst die Benutzer mit 0 Artikel, also OHNE einen Eintrag in der Tabelle "artikel" nicht finden würdest. Wenns mit den Namen nicht gleich geht, dann so: select artikel.id count(artikel) as st from artikel group by id order by st desc Das ganze dann in eine temporäre Tabelle und dann via id die Namen aus der Tabelle bentuzer lesen. Viel Erfolg. Gruß Alexander --- !!NEU!! Fragen und Antworten zu MySQL und dieser Liste unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive