phpbar.de logo

Mailinglisten-Archive

Re: abfrage uber 5 tabellen
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: abfrage uber 5 tabellen



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 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive