[SQL] ook "0" weergeven bij een count()

Pagina: 1
Acties:
  • 129 views sinds 30-01-2008
  • Reageer

  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 09:40

iMars

Full time prutser

Topicstarter
Ik zit al de hele avond te tobben, maar het lukt maar niet.
Ik wil uit mijn database (MySQL) wat gegevens halen.

ik heb eeb tabel categorie en een tabel kleding...
ik wil van elk categorie het id weten, de omschrijving en hoevaak ie voorkomt in de tabel kleding.

Ik heb de volgende query, die goed werkt:

SELECT categorie.id, categorie.omschrijving, COUNT(kleding.id_categorie) FROM categorie INNER JOIN kleding ON categorie.id = kleding.id_categorie GROUP BY categorie.id

Alleen geeft ie niet alles aan wat ik wil.
Hij geeft alles aan mits de id meer als één keer voorkomt in de tabel kleding.

Maar ik wil ook dat ie weergeeft als ie nul keer voorkomt.

vb.: (dit wil ik)

1 Ballroom Dames 5
2 Ballroom Heren 1
3 Latin Dames 0
4 Latin Heren 0

maar dit krijg ik:

1 Ballroom Dames 5
2 Ballroom Heren 1

Hoe kan ik dit anders oplossen?

[ Voor 3% gewijzigd door iMars op 29-05-2003 01:39 ]

Koop hier mijn P1 reader :)


Verwijderd

Je zou kunnen proberen om 2 query's te maken; degene die je al had en eentje waarin alle 'nul gevallen' voorkomen. Die wordt dan dus: SELECT categorie.id, categorie.omschrijving FROM categorie WHERE NOT EXISTS ( SELECT * FROM kleding WHERE kleding.id_categorie = categorie.id )

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

sub-queries gaan sowieso niet werken met mysql. Probeer eens een LEFT JOIN ipv een INNER JOIN

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


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je INNER veranderen in een LEFT join helpt niet je probleem al verhelpen? :)

edit:
Aargh, thomaske! :)

[ Voor 20% gewijzigd door ACM op 29-05-2003 01:50 ]


  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 09:40

iMars

Full time prutser

Topicstarter
Krijg een error:
You have an error in your SQL syntax near 'EXISTS ( SELECT * FROM kleding WHERE kleding.id_categorie = categorie.id ) LIMIT' at line 1

Zou mooier zijn als het met één sql statement zou kunnen... :*)

Maar dat kan denk ik niet :'(

Koop hier mijn P1 reader :)


  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 09:40

iMars

Full time prutser

Topicstarter
ACM schreef op 29 mei 2003 @ 01:50:
Je INNER veranderen in een LEFT join helpt niet je probleem al verhelpen? :)

edit:
Aargh, thomaske! :)
Whoohooo :*) :*) :*) :*) Dat werkt

Dat ik daar zelf niet aan gedacht heb * iMars = |:(

Edit:

En natuurlijk Thomaske!!!!!!!! (voortaan ff verder omhoog scrollen _/-\o_ )

[ Voor 15% gewijzigd door iMars op 29-05-2003 01:55 ]

Koop hier mijn P1 reader :)


  • Onno
  • Registratie: Juni 1999
  • Niet online
ACM schreef op 29 May 2003 @ 01:50:
Je INNER veranderen in een LEFT join helpt niet je probleem al verhelpen? :)
Gaat ie dan niet de NULL die dat oplevert als 1 tellen?

edit:
Oh, niet dus. :)

[ Voor 7% gewijzigd door Onno op 29-05-2003 01:59 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Onno schreef op 29 May 2003 @ 01:56:
Gaat ie dan niet de NULL die dat oplevert als 1 tellen?

edit:
Oh, niet dus. :)
Nee, als 0 :)

Volgens mij doen alle databases dat met een 0-etje hoor? Iig mysql, postgresql en oracle (ok, daar gebruikte ik het met een =* of *= maar das ook een left/right join) :)

  • Onno
  • Registratie: Juni 1999
  • Niet online
ACM schreef op 29 mei 2003 @ 11:24:
Nee, als 0 :)

Volgens mij doen alle databases dat met een 0-etje hoor? Iig mysql, postgresql en oracle
Mja, zag ik ook. Sybase geeft wel een warning, maar verder doet ook die het zo. Had het gewoon nooit geprobeerd. :)
(ok, daar gebruikte ik het met een =* of *= maar das ook een left/right join) :)
Niet a=b(+)? Ik meende dat a=*b alleen in Sybase (en dus ook MSSQL) werkte. :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ja, ik gooi ze door elkaar :P

Idd die (+) erbij :) (en bedenk me dat ik het dus ook in mssql gebruikt zal moeten hebben, anders wist ik dit niet :o )

[ Voor 53% gewijzigd door ACM op 29-05-2003 11:58 ]

Pagina: 1