T-Rex: Count mit subselect Abfrage

Beitrag lesen

Moin,

da gibt es 3 Tabellen. Eine Tabelle hat Rezepte (R) eine Tabelle hat Eigenschaften (E) und eine Verbindungstabelle (RE) mit 2 relevanten spalten RE_ID_R (Verbindung zu R) und RE_ID_E (Verbindung zu E). Die Namen habe ich vereinfacht.

Ziel ist die Anzahl an Rezepten zu einer Eigenschaft aus der Datenbank zu holen. Soweit kein Problem. Hat der User jedoch durch das wählen einer Eigenschaft eine Eingrenzung getroffen soll diese mit berücksichtigt werden.
Beispiel:
Eine Eigenschaft (süß) hat 50 Rezepte. Wählt man eine Eigenschaft (desert) hat die Kombination zwischen gewählte Eigenschaft und möglicher Eigenschaft nur noch 20 Rezepte. Also Eigenschaft süß hat 50 Rezepte, desert + süß hat nur noch 20 Rezepte.

Ich bekomme dieses §$%§$"§$ Query einfach nicht hin....

Aber eins nach dem anderen. Als erstes ein Query mit dem ich zähle wie viele Eigenschaft pro Rezept identisch sind:

select count(*) as ANZAHL from RE where RE_ID_E = "2" or RE_ID_E = "17" group by RE_ID_R

Jetzt werden die Rezepte aussortiert deren Anzahl an identischen Eigenschaften nicht der gewünschten Anzahl entspricht:

select count(*) as ANZAHL from RE where RE_ID_E = "2" or RE_ID_E = "17" group by RE_ID_R having ANZAHL = 2

Jetzt bekomme ich so viele Zeilen zurück wie es Rezepte mit den zwei gewünschten Eigenschaften gibt. Die zähle ich alle zusammen:

select count(*) from (select count(*) as ANZAHL from RE where RE_ID_E = "2" or RE_ID_E = "17" group by RE_ID_R having ANZAHL = 2 ) as muss

Jetzt hätte ich tatsächlich die Anzahl an Rezepten mit den gewünschten Eigenschaften. Jetzt würde ich gerne alle Eigenschaften durchgehen und Eigenschaften Abhängig die Anzahl berechnen also:

select E.*, (select count(*) from (select count(*) as ANZAHL from RE where RE_ID_E = "2" or RE_ID_E = "17" or RE_ID_E = E_ID group by RE_ID_R having ANZAHL = 3 ) as muss ) as REZEPTE from E

Ich lade also alles von der Eigenschafttabelle dazu. Im Subquery habe ich die Abfrage um ein Feld erweitert. Das Having habe ich um eine Zahl erhöht. Das Problem - MySQL sagt jetzt, dass das Feld E_ID nicht bekannt ist. E_ID ist dem Subquery anscheinend nicht bekannt. Somit scheitert dieser Ansatz :(.

Hoffe ich habe mich verständlich ausgedrückt. Die MySQL spielt keine Rolle da es ein hoffentlich allgemeines Problem ist.

Gruß
sub
T-Rex