Halihallo Ilja
... jep, wenn alle beteiligten Join-Relationen mit PRIMARY KEY, oder
Schlüsselkandidat (UNIQUE) in GROUP BY aufgenommen werden, macht
jedwelcher COUNT(*) keinen Sinn, da er per Definition *immer* 1 ist.mit anderen worten, du setzt für das funktionieren deiner query vorraus, dass alle beteiligten die eigenschaft unique besitzen.
Nein, ausschliesslich x.id und y.id; so dass auf jedes x-Tupel genau
(oder mindestens ein) y-Tupel zutrifft. Die z-Tupel stehen dann in
einer 1:N Beziehung zu wahlweise x.id oder y.id (was ja "dasselbe"
ist). Ein COUNT(*) zählt dann die z-Tupel, die zu id (x.id=y.id)
zugewiesen werden, also IMHO das, was Bernd erreichen wollte.
aber genau diese eigenschaft setzt den sinn der count() funktion ausser kraft, nach der aber gefragt wurde.
Dies wäre der Fall, wenn x.id=y.id=z.id zutrifft, wovon ich - nach
Bernds Aussagen - eben nicht ausgehe. x.id=y.id, aber z.id ist ein
Foreign Key und somit steht er in diesem Kontext in einer 1:N
Beziehung zu (x|y).id.
letztlich läuft es darauf hinaus, dass man vorsichtig sein muss, was man so in das group by mit rein nimmt, da es in aller regel einfluss auf die aggregat-funktionen hat. deshalb sehe ich bei diesem problem eher unterabfragen als mögliche lösung an. leider hat sich bernd nicht mehr gemeldet.....
Du hat eine korrelierte (d.h. für jedes Tupel der Main-Query, muss
die Unterabfrage erneut ausgewertet werden) Unterabfrage
vorgeschlagen, diese Kosten im Normalfall sehr viel, sollten also
(wenn es eine bessere Abfrage gibt) unterlassen werden. Falls jedoch
die GROUP BY-Lösung nicht funktionieren sollte (was Bernd
entscheiden muss), ist natürlich eine Unterabfrage unweigerlich die
richtige Lösung.
Soweit ich Bernds Problem verstanden habe, ist es jedoch mit GROUP BY
in diesem konkreten Fall einfach zu lösen.
Mal sehen, vielleicht meldet sich Bernd ja noch, wäre wirklich
hilfreich.
jau das stimmt, 1 ist bei count() der kleinstmögliche wert
Nur bei COUNT(*), nicht bei COUNT([DISTINCT] attr) :-)
da immer eine ergebnistabelle erzeugt wird. da kann man mal sehen, auch columbo ist nicht perfekt ;-)
Nein, nein, ich bin eben ein vielversprechender Halunke :-),
vielleicht Typus Professor Moriarty, das ist das Problem :-)
Viele Grüsse
Philipp