Hast du bei der ‘next’ relation ein ‘INNER JOIN’ definiert? Andernfalls würd ich die count()-Abfrage ohne with() machen. Wenn du with() verwendest ist DISTINCT() wegen der JOINs nötig.
Hmm. Ohne jetzt intensiv drüber nachgedacht zu haben behaupte ich mal: Du kannst nicht mit einem einzigen SQL-Statement beides Abfragen: Anzahl der Einträge in der Haupttabelle + Anzahl der jeweils dazu verknüpften Einträge in einer anderen Tabelle.
Oder kannst du mir mal das SQL zeigen, das generiert werden soll?
SELECT COUNT(DISTINCT(entry.id)) FROM entry
INNER JOIN entry_solution ON (entry.id=entry_solution.entryId)
INNER JOIN solution ON (entry_sloution.solutionId=solution.id)
Das will ich // -> 5
SELECT COUNT(entry.id) FROM entry
INNER JOIN entry_solution ON (entry.id=entry_solution.entryId)
INNER JOIN solution ON (entry_sloution.solutionId=solution.id)
Ich habe schon mit CDbCriteria rumgespielt, aber bisher hat nichts gebracht.
Die einzige Möglichkeit wäre das Statement so in eine Funktion zu übergeben und auszuführen, aber da ich schon die relations definiert habe, wäre es eleganter über diese Count auszuführen.
Andere Möglichkeit wäre es in einer for-Schleife die Ergebnisse zu zählen, jedoch ist das Perfomance-technisch nicht zu empfehlen
Ok, das kann man logisch umwandeln zu “Liefer mir die Gesamtanzahl aller Einträge in entry_solution, für die ein passender Eintrag in entry existiert” (zumindest ist das das, was rauskommt, wenn du das DISTINCT weglässt). Also willst du eigentlich nicht entry sondern entry_solution abfragen. D.h. wenn du in entry_solution nen INNER_JOIN zu entry hinzufügst und dann ->with(‘entry’)->count() auf entry_solution machst, solltest du das richtige Ergebnis bekommen.