join andersherum?
am 15.01.2007 16:33:24 von Markus Schmidt
Hallo NG!
Nochmal eine Bescheidene Frage, zu der mir grade die richtige Lösung fehlt:
habe 2 Tabellen
Adressen und Einträge
Eine Adresse kann 0-x Einträge haben und ich würde gern herausfinden, welche
Adresse wie viele Einträge hat. Andersherum (Adresse dem Eintrag zuordnen)
ist ja kein Problem - aber wie umgekehrt? (So, das auch die mit 0 Einträgen
erfasst werden und bei "Menge" dann halt eine "0" erscheint).
Wer hilft mir auf die Sprünge?
Danke und Gruß
Markus
Re: join andersherum?
am 15.01.2007 16:40:39 von Christian Hammers
On 2007-01-15 Markus Schmidt wrote:
> Hallo NG!
>=20
> Nochmal eine Bescheidene Frage, zu der mir grade die richtige Lösung fe=
hlt:
>=20
> habe 2 Tabellen
>=20
> Adressen und Einträge
> Eine Adresse kann 0-x Einträge haben und ich würde gern herausfinden,=
welche=20
> Adresse wie viele Einträge hat. Andersherum (Adresse dem Eintrag zuordn=
en)=20
> ist ja kein Problem - aber wie umgekehrt? (So, das auch die mit 0 Eintr=
ägen=20
> erfasst werden und bei "Menge" dann halt eine "0" erscheint).
Ich glaube das "outer" im Join ist das, was Du noch nicht kanntest. Falls d=
a beim
count() nun "NULL" anstatt "0" rauskommt, kannst Du es mit "ifnull(count...=
, 0)"=20
umwandeln.
SELECT
Adressen.id
count(Einträge.id) as Anzahl_der_Einträge
FROM
Adressen
left outer join Einträge on (Adressen.id =3D Einträge.adressen_id)
GROUP BY
Adressen.id
;
tschüss,
-christian-
Re: join andersherum?
am 15.01.2007 16:44:26 von Andreas Kretschmer
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Re: join andersherum?
am 15.01.2007 16:49:04 von Markus Schmidt
Hoi Christian!
> Ich glaube das "outer" im Join ist das, was Du noch nicht kanntest. Falls
> da beim
> count() nun "NULL" anstatt "0" rauskommt, kannst Du es mit
> "ifnull(count..., 0)"
> umwandeln.
Stimmt - das left outer join hatte sich bisher an meinem Merkvermögen
vorbeigeschmuggelt...
> SELECT
> Adressen.id
> count(Einträge.id) as Anzahl_der_Einträge
> FROM
> Adressen
> left outer join Einträge on (Adressen.id = Einträge.adressen_id)
>GROUP BY
> Adressen.id
und das funktioniert - unglaublich - und ivh zerbrech mir hier den Kopf
*seufz* so isses wenn man eine Antwort braucht auf die man die Frage nicht
kennt...
1000 Dank!
Markus
Re: join andersherum?
am 15.01.2007 19:05:44 von Helmut Chang
Andreas Kretschmer schrieb:
> test=*# select t1.id, sum(t2.t1_id) from t1 left join t2 on t1.id=t2.t1_id group by t1.id;
^^^^^^^^^^^^^
Also ich glaub ja, dass man auch unter PostgreSQL die Anzahl mit COUNT()
ermittelt und bei dir nur zufällig ein Wert rauskommt, der richtig
ausschaut, weil t2.t1_id jeweils 1 ist.
gruss, heli
Re: join andersherum?
am 15.01.2007 21:18:41 von Andreas Kretschmer
Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)