Toon posts:

[SQL] Query probleem

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

Verwijderd

Topicstarter
OK, ik heb een tabel Deelname die bestaat uit een KopersID en een VeilingsID! Een koper mag meedoen aan meerdere veilingen!

Een voorbeeld tabel:

KopersID VeilingsID
0000000005 0000000003
0000000009 0000000002
0000000006 0000000003
0000000004 0000000001
0000000008 0000000001
0000000008 0000000004
0000000009 0000000001
0000000005 0000000001
0000000006 0000000005

Stel ik wil nu alle Kopers selecteren die NIET Meedoen aan Veiling 0000000001! Ik kom dan het volgende probleem tegen: Ik doe de volgende Query:

SQL:
1
2
3
4
SELECT     dbo.Deelname.VeilingsID, dbo.Koper.Kopersid
FROM         dbo.Deelname INNER JOIN
                      dbo.Koper ON dbo.Deelname.KopersID = dbo.Koper.Kopersid
WHERE     (NOT (dbo.Deelname.VeilingsID = '0000000001'))


Dat levert mij iid de de KopersID's op die NIET meedoen in veiling 000000001, maar als een koper meedoet aan een andere veiling, die niet als VeilingsID 0000000001 heeft, dan pakt ie die ook! Dat is dus NIET mijn bedoeling!

Oftewel als men meedoet aan veiling 000000001, dan mag ie niet in de resultset voorkomen!

Iemand een idee hoe ik dit voor elkaar moet krijgen?

Meer weten over structuur van database ofzo, let me know!

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Je zult een subquery moeten gebruiken.

SELECT * FROM blaat WHERE blaatid NOT IN (SELECT blaatid fom ..... )

Zoek dus eens op subqueries enzo.
Note: MySQL ondersteunt dat niet.

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je overdreven gebruik van leestekens (uitroep ed) maakt je post heel vervelend om te lezen. Dat vind ik tenminste. Wat betreft je probleem gooi ik dit even uit de losse pols:
SQL:
1
2
3
Select * from koper where koper.kopersID not in
    (Select kopersID from Deelname 
        where Deelname.VeilingsID = '0000000001')


Hiermee selecteer je alle koperID's die niet voorkomen in de recordset van de subquery. En die subquery pakt alles met een veilingID van 0000000001, dus zul je de juiste set krijgen.

[ Voor 32% gewijzigd door OZ-Gump op 11-06-2003 10:23 ]

My personal website


  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:52

momania

iPhone 30! Bam!

Ik begrijp dus uit je verhaal het volgende:
Als een koper alleen maar meedoet aan veiling 000000001, komt hij niet terug in het resultaat. -> goed
Als een koper niet meedoet aan veiling 000000001, komt hij wel terug in je resultaat. ->goed
Maar als een koper aan meerdere veilingen meedoet incl. 000000001, komt hij ook terug in je resultaat? -> fout

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

quote:
Stel ik wil nu alle Kopers selecteren die NIET Meedoen aan Veiling 0000000001
quote:
Dat levert mij iid de de KopersID's op die NIET meedoen in veiling 000000001,maar als een koper meedoet aan een andere veiling, die niet als VeilingsID 0000000001 heeft, dan pakt ie die ook! Dat is dus NIET mijn bedoeling!


als je t mij vraagt spreek je jezelf een beetje tegen?

  • StijNoS
  • Registratie: November 2000
  • Laatst online: 19:54
Het klopt wel wat hij zegt. Alleen is het wel wat onduidelijk geformuleerd.
Volgens mij wil hij gewoon alle Kopers te zien krijgen die niet meedoen aan veiling 000001.
Mocht een Koper niet meedoen aan veiling 000001 maar bv wel aan veiling 0000005 dan wil hij deze toch niet zien.

Als dit zo is, dan is het goeie antwoord al gegeven door OZ-Gump

??blabla??


Verwijderd

Topicstarter
OK, ben er al uit.

OZ-Gump's Query werkt, en zorgt voor de juiste resultaten! Momania heeft ook gelijk wat betreft wat ik bedoelde. EN Whoami, ik gebruik SQL server Enterprise Edition.

Bedankt voor de snelle reacties!

p.s.: ik ben gewend uitbundig en overenthusiast te zijn met ! en ? en ..... GET USED TO IT!!!!

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

p.s.: ik ben gewend uitbundig en overenthusiast te zijn met ! en ? en ..... GET USED TO IT!!!!
Nou vooruit dan... ik zal mijn best doen ;)

My personal website


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 11 juni 2003 @ 10:30:
p.s.: ik ben gewend uitbundig en overenthusiast te zijn met ! en ? en ..... GET USED TO IT!!!!
Het is hier een redelijk grote community. Het lijkt me daarom een beetje erg egoistisch om te stellen dat iedereen zich maar aan jou aan moet passen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 17-06 14:59

klokop

swiekie swoeng

Puur voor mijn eigen SQL oefening/vermaak: zo kan het toch ook?
code:
1
2
3
4
select  *
from    kopers, deelname
where   kopers.koperID=deelname.koperID
and not deelname.veilingID="00000001"

"Passing silhouettes of strange illuminated mannequins"


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Neen, zo kan het niet. Daar ga je gewoon de records gaan ophalen (de kopers en hun deelnames), behalve die records die te maken hebben met veilingid "0000001".
Echter, de topicstarters wil een lijst van de kopers die niet meedoen aan die veiling. Met jouw query worden die echter toch ook nog gereturned.

https://fgheysels.github.io/


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 17-06 14:59

klokop

swiekie swoeng

Je hebt gelijk ...maar hoe dan wel zonder subselect?

"Passing silhouettes of strange illuminated mannequins"


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wat is de reden dat het zonder een subselect moet?

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 17-06 14:59

klokop

swiekie swoeng

Als je het bijvoorbeeld in MySQL wilt doen.

"Passing silhouettes of strange illuminated mannequins"


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Daar hebben ze in de mysql-manual een pagina aan gewijd, je zou daar es naar kunnen kijken. Iets met een LEFT JOIN ... WHERE veld IS NULL;
Pagina: 1