Toon posts:

[SQL] Query vraag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een vraag over een query, het gaat over de volgende query:

SELECT Bestand.* FROM Bestand, KoppelBestandGroep where Bestand.bestandid=KoppelBestandGroep.bestandid and ( KoppelBestandGroep.groepid=200 or KoppelBestandGroep.groepid=201 ) order by Bestand.naam

De tabel Bestand bevat records die naar bestanden wijzen (kolommen bestandid en naam). Nu kan een bestand in 1 of meerdere groepen zitten.

Of een bestand in 1 of meerder groepen zit staat in de KoppelBestandGroep (kolommen bestandid en groepid).

Nu werkt de bovenstaande query perfect en geeft me alle bestanden terug die in groep zitten met groepid 200 of 201.

Maar het kan voorkomen dat een bestand niet in een groep zit, dan is hij publiek. Er komt dan geen record voor in KoppelBestandGroep voor dat bestand. Met de bovenstaande query worden deze publieke bestanden niet gereturnt.

Weet iemand hoe ik de query moet aanpassen om ook publieke bestanden terug te krijgen (publieke bestanden zijn bestanden zonder groep).

_/-\o_

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Zoals je de query nu hebt geschreven maak je impliciet gebruik van een INNER JOIN. Wat jij nodig hebt is een OUTER JOIN

code:
1
2
3
4
SELECT * 
FROM Bestand B
LEFT OUTER JOIN KoppelBestandGroep G ON B.GroepId = G.GroepId
ORDER BY B.Naam


Je moet nu logischerwijs geen WHERE clausule op de KoppelBestandGroep.GroepId kolom zetten.

offtopic:
RObIII : :z
1 minuut eerder, en ook nog met voorbeeld :)

[ Voor 11% gewijzigd door P_de_B op 23-09-2004 10:25 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Welke SQL?
Kijk eens naar joins... Met een left outer join ofzo moet je een heel eind komen lijkt me.

edit:

Damn you, P_de_B :w

[ Voor 17% gewijzigd door RobIII op 23-09-2004 10:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Jullie hebben gelijk, met een join gaat het perfect. Dan krijg ik mooi een NULL waarde KoppelBestandGroep kolommen en die kan ik dan mooi met G.groepid IS NULL includen in m'n resultset.

:Y)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

For the record, je gebruikte al een join hoor :) In je originele query stond een INNER JOIN in alternatieve notatie.

Zie ook P&W FAQ - SQL :)

Professionele website nodig?