Mailinglisten-Archive |
Hallo Daniel, > Hallo Liste, > > ich habe ein kleines problem bei meiner abfrage. Ich habe eine datenbank > bestehend aus 7 tabellen( vorträge, links, kurse, 3 für ein forum und eine > fürs thema). Nun ich habe in der thema tatenbank alle themas abgespeichert > und in den anderen tabellen jeweils die id vom thema. aber jetzt brauche ich > eine abfrage bei der ich aus allen tabellen die summe der einträge nach > tabellen sortiert erhalte. > > Bsp. > > id_thema / thema / anzahlLinks / anzahlVortrag / anzahlKurse / > anzahlForum > 1 / moorhüner/ 45 / 34 > / 23 / 23 / > 2 / mäuse / 1 / 5 > / 0 / 156 / > ..... > > > ich habe es mit dieser abfrage versucht: > > select id_thema, thema, count(B.thema_id) as anzahlLinks, count(C.thema_id) > as anzahlVortrag, count(D.thema_id) as anzahlKurse, count(E.thema_id) as > anzahlForum from thema as A, links as B, vortrag as C, kurse as D, > forum_thread as E where A.id_thema=B.thema_id or A.id_thema=C.thema_id or > A.id_thema=D.thema_id or A.id_thema=E.thema_id group by id_thema > > > aber so erhalte ich nur das: > > id_thema / thema / anzahlLinks / anzahlVortrag / anzahlKurse / > anzahlForum > 1 / Bäume / 34 / 34 > / 34 / 34 > 2 / Blumen / 153 / 153 > / 153 / 153 > 3 / Autos / 18 / 18 > / 18 / 18 > 4 / Computer / 81 / 81 > / 81 / 81 > > wieso erhalte ich in jeder in jeder zeile nur die grösste anzahl einträge > pro zeile. > Weil Du einfach nur einfach nur alle Tabellen in einer Abfrage verknüpftst. Du mußt schon dafür sorgen, daß in den anderen Tabellen selektiv - nach Übereinstimmung mit thema.id_thema - gezählt werden soll. Ich weiß nicht ob das verständlich ausgedrückt ist, auf jeden Fall geht das nur per JOIN. Bsp: select a.id, count(a.id) as anz1, count(b.id) as anz2 from tabelle1 as a left join tabelle2 as b on a.id = b.id group by a.id Das geht AFAIK auch mit sieben! Tabellen. Gruß, Jens Peter Möller --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive