zählen in Join abfragen

zählen in Join abfragen

am 03.02.2006 00:04:16 von Jan Rademacher

Hallo,
ich beisse mir grad die Zähne aus und es wär nett, wenn sich jemand
erbarmen würde mir zu halfen ;)

Problem: ich habe eine sql tabelle mit eigenschaften.
Diese Eigenschaften können von Jungen und Mädchen in extratabellen
ausgewählt werden.
Nun möchte ich wissen, wie oft die Eigenschaft jeweils von J und M
ausgewählt wurden. Und das gerne in einem Query und nicht mit Querys in
der whileschleife.

meine Vorstellung:

SELECT * from eigenschaft
LEFT JOIN jungen COUNT(*) as anz_j ON (eigenschafts_id=jungen_id)
LEFT JOIN maedchen COUNT(*) as anz_m ON (eigenschafts_id=maedchen_id)

leider versteht mysql diese abfrage nicht - darum hoffe ich, Ihr
versteht Sie und könnt mir da helfen ?

Wäre ganz lieb,
danke & lg
Jan

--
Jan Rademacher

http://www.lockerbleiben.net

Re: zählenin Join abfragen

am 03.02.2006 09:08:23 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net

Re: zählenin Join abfragen

am 04.02.2006 00:00:55 von Markus Mann

Jan Rademacher wrote:
>
> meine Vorstellung:
>
> SELECT * from eigenschaft
> LEFT JOIN jungen COUNT(*) as anz_j ON (eigenschafts_id=jungen_id)
> LEFT JOIN maedchen COUNT(*) as anz_m ON (eigenschafts_id=maedchen_id)
>
> leider versteht mysql diese abfrage nicht - darum hoffe ich, Ihr
> versteht Sie und könnt mir da helfen ?

Dein Problem hat weniger mit einem JOIN zu tun. Löse es am besten mit
einem CASE.

So ganz schlau werde ich aus deiner obigen Query allerdings auch nicht,
aber ich versuche mal, dich auf die richtige Fährte zu locken:

SELECT sum(case when e_id = jungen_id then 1 else 0 end) as anz_J
, sum(case when e_id = maedchen_id then 1 else 0 end) as anz_m
from tabelle

Übrigens habe ich den Verdacht, dass dein Datenmodell nicht richtig
normalisiert ist. Dir scheinen Grundlagen zu fehlen:



HTH & Ciao.
--
Markus Mann
];-)