[MySQL] Tellen van childtabel wil niet goed werken

Pagina: 1
Acties:

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11 10:27

Deddiekoel

Gadget nerd

Topicstarter
Ik heb het idee dat de oplossing erg simpel moet zijn maar ik krijg het niet aan de praat.
Ik heb hier ook ooit een werkende SQL voor gehad maar die is door een rotte HDD verloren gegaan :(

Ik wil het volgende doen. Ik heb een parent table waar ik een select op doe. Aan die select wil ik ook een count van een child table zetten. Deze count telt alle records die voldoen aan een bepaalde voorwaarde (status <> x).

Ik wilde dit met een outer join doen:
SQL:
1
2
3
4
SELECT p.c1, p.c2, p.c3, count(c.c1) as aantal
FROM parent p LEFT JOIN child c ON p.c1 = c.c1
WHERE c.status<>'X' 
GROUP BY p.c1;

Maar dit wil niet werken als de count 0 is. Dan krijg ik nl. niets terug, terwijl ik dan juist 0 wil hebben. Hoe moet ik dit in MySQL (5) aanpakken?

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 01-12 20:47
where ... or c.status is null

Wanneer er geen rijen uit tabel c zijn, dan is er dus ook geen status, null dus

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11 10:27

Deddiekoel

Gadget nerd

Topicstarter
Maar er zijn wel rijen in tabel c, en die hebben allemaal een status. Ik wil dat alle records die niet status x hebben geteld worden...

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 27-11 21:33

thomaske

» » » » » »

dat moet je dan niet in de where zetten maar in de join-conditie:

SQL:
1
2
3
4
SELECT p.c1, p.c2, p.c3, count(c.c1) as aantal
FROM parent p 
LEFT JOIN child c ON p.c1 = c.c1 AND c.status<>'X' 
GROUP BY p.c1;

[ Voor 54% gewijzigd door thomaske op 06-11-2006 23:51 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11 10:27

Deddiekoel

Gadget nerd

Topicstarter
Thanks thomaske, dit deed het hem idd!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11 10:27

Deddiekoel

Gadget nerd

Topicstarter
Hmmm, heb nu een vergelijkbaar probleem en ook hier kom ik niet uit
Ik heb wederom een tabel met daarin een status veld en een type veld.
Wat ik nu probeer te bereiken is dat ik een count krijg van alle records van type a met een status van x ook als deze count 0 is.
Als dit de data is:
code:
1
2
3
4
5
6
7
8
9
10
Type    Status
a       y
a       y
a       y
b       x
b       y
b       x
c       x
c       x   
c       x

Dan zoek ik de SQL die me voor type x als resultaat geeft:
code:
1
2
3
4
Type    StatusCount
a       0
b       2
c       3

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2

Pagina: 1