yo,
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.
dem muss/will ich zustimmen. wenn x.id und y.id PK sind und z.id kein PK, dann wird genau das gewünschte angezeigt. und das hast du auch die ganze zeit gesagt. da habe ich ein wenig zuviel in deine aussagen hinein interpretiert. insofern hast du recht. und group by ist sicherlich auch wesentlich schneller als unterabfragen, also in dem falle vorzuziehen.
auf der anderen seite, ist es fraglich, dass genau diese konstellation existiert, wenn auch nicht unmöglich. laut bernds aussagen ist nur x.id pk. insofern würde ich eher zu nein, bzw. da alle den namen id haben, eher zu allen drei als pk tendieren. wobei es sicherlich auch um FK handeln kann. who knows....
wobei mein 0 sonderfall mir wieder ins gedächnis gekommen ist. count(*) liefert immer einen wert, der aber im sonderfall auch 0 sein kann, nämlich wenn die ergebnis-tabelle leer ist.
Ilja