Elemente aus Elementen aus Elementen zählen ...

trivilian

Grünschnabel
Hey Leute!

Ich beschäftige mich zur Zeit mit folgendem Problem:
Es gibt Kateogrien (tab_kat), in denen Artikel enthalten sind (tab_art). Diese Artikel widerum haben mehrere Bestandteile (tab_bes).

Ich habe in tab_kat lediglich die Namen, ein paar Eigenschaften und natürlich die kat_id festgehalten.
In tab_art sind die Artikelbezeichnungen sowie allgemeine Infos und ihre art_id beschrieben, sowie die kat_id der kategorie, in die sie gehören.
In tab_bes sind nun die Bestandteile beschrieben. Dort habe ich die art_ids der Artikel, sowie die bes_id gespeichert.

Diese Informationen sollten eigentlich genügen um festzustellen, in welcher Kateogrie sich die Bestandteile befinden.
Ich will nun zählen, wieviele Bestandteile in einer Kategorie enthalten sind und das möglichst mit einer Abfrage.

Kleines Beispiel: Anzahl der Bestandteile in der Kategorie mit kat_id 3:
Code:
SELECT COUNT(*)
FROM
 tab_art AS a LEFT OUTER JOIN tab_bes AS b
 ON a.art_id = b.art_id
WHERE a.kat_id = 3
Leider funktioniert das so nicht. In meiner Logik muss irgendwo ein knick sein. Kann mir jemand auf die Sprünge helfen?

thx)
 
Das müßte so eigentlich klappen:
Code:
SELECT count(  *  ) , a.kat_id
FROM tab_art AS a, tab_bes AS b
WHERE b.art_id = a.art_id
GROUP  BY (a.kat_id
)
 
Nein, das funktioniert leider nicht richtig.

Code:
mysql> SELECT count(  *  ) , a.kat_id
    -> FROM tab_art AS a, tab_bes AS b
    -> WHERE b.art_id = a.art_id
    -> GROUP  BY (a.kat_id
    -> );
+--------------+--------+
| count(  *  ) | kat_id |
+--------------+--------+
|          390 |      1 |
+--------------+--------+

Die Zahl 390 entspricht in diesem Fall der Zahl aller Bestandteile aller Kategorien.

Es gibt in meiner Testdatenbank 10 Kategorien mit je 13 Artikeln, die je 3 Bestandteile besitzen.
Hier ist mal die Datenbank: http://nopaste.tshw.de/1167246397de7ae/

Ich hab jetzt schon einiges versucht und die Vorschläge sind eigentlich oft ähnlich. Mittlerweile glaube ich, dass es an meiner Datenbank liegen könnte. Ich find jedoch keine Unregelmäßigkeiten.

Trotzdem vielen Dank für deine Mühe :)
 
Zurück