[MSSQL] Selectiecriteria

Pagina: 1
Acties:

  • fdv99
  • Registratie: Mei 2004
  • Laatst online: 01-12 12:21

fdv99

Penguin power

Topicstarter
Ik kom er maar niet uit, heb uren op google rondgehangen en ook op tweakers niks te vinden. Please help!

Het probleem:

Ik heb een tabel die er zo uit ziet:
Artikelen:
nummernawnrgroep
77073711281001
77073710101001
77073810101002
77073710101002


Ik wil graag de volgende selectie kunnen maken:
Selecteer alle nummers waar een bepaalde nawnummer niet in voorkomt en een bepaalde groep heeft.

In adere woorden:
SQL:
1
SELECT nummer FROM $tabel WHERE groep = '1001' AND nawnr <> '1010'


Deze query geeft als resultaat de eerste row uit de voorbeeld tabel. Wat ik dus wil is dat als een nawnr bij een nummer bestaat dit nummer helemaal niet in de selectie voorkomt. Ik weet haast zeker dat het mogelijk moet zij en op het eerste gezicht lijkt het ook makkelijk. Maar niet voor mij :P

Het gaat trouwens om SQL server versie 2000 in combinatie met een C# 2005 programma.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

Geef eens een voorbeeld van het resultaat dat je wilt (in data), want je beschrijving wordt ik niet echt wijzer van...

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
subqueries
code:
1
2
3
4
select * 
from tabel
where nummer not in ( select nummer from tabel where nawnummer = bliep )
and groep = '1001'

https://fgheysels.github.io/


  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

Een where clausule werkt enkel per record. Je kunt daarin dus niet meerdere records tegelijk matchen. Wat jij wilt zul je moeten doen is waarschijnlijk met een subquery werken.

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


  • fdv99
  • Registratie: Mei 2004
  • Laatst online: 01-12 12:21

fdv99

Penguin power

Topicstarter
whoami schreef op dinsdag 19 juni 2007 @ 15:20:
subqueries
code:
1
2
3
4
select * 
from tabel
where nummer not in ( select nummer from tabel where nawnummer = bliep )
and groep = '1001'
Ahhh, super, dus zo kan je dit oplossen. Ben weer een stapje dichterbij maar ik loop nog tegen het volgende probleem aan, kan dit ook met sql worden opgelost?

Weer dezelfde tabel:
Artikelen:
nummernawnrgroep
77073711281001
77073710101001
77073710201001
77073810101002
77073710101002


Nu wil ik graag alle nummers selecteren waar bijvoorbeeld nawnr '1050' niet in voor komt, en die in groep '1001' zitten. Dus met de query van Whoami:

SQL:
1
2
3
SELECT * FROM $table 
WHERE nummer NOT IN ( SELECT nummer FROM $table WHERE nawnr = '1050' ) 
AND groep = '1001'


Dit werkt tot zo ver dat hij (in dit voorbeeld) nu 2 keer met nummer '770737' komt. Is het ook mogelijk om die (via SQL) te ontdubbelen? Zodat ik alle nummers maar 1 keer krijg die geen nawnr '1050' hebben?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Natuurlijk is wat jij vraagt mogelijk, ik heb echter het gevoel dat je basiskennis wel een oppoetsbeurt kan gebruiken.

In Programming FAQ - SQL staat veel nuttige informatie, en links naar andere sites met tutorials.

Waar je nu overigens naar opzoek bent is niet eenuidig te zeggen. Je krijgt twee keer 770737, maar de andere kolommen zijn wel verschillend. Welk record wil je dan?

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


Verwijderd

code:
1
SELECT nummer FROM $tabel GROUP BY nummer HAVING BIT_AND(nawnr <> '1010) AND groep = '1001'


Niet getest, maar zou moeten werken en wat sneller moeten zijn dan subqueries, denk ik.

Het gaat hier dus om wat Janoz zei, WHERE werkt per record. Echter deze query groepeert op nummer met GROUP BY en kijkt daarna of van elke groep rijen alle nawnr ongelijk zijn aan 1010 met HAVING BIT_AND(expressie).

[ Voor 1% gewijzigd door Verwijderd op 23-06-2007 19:18 . Reden: bbcode fout ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Misschien vergis ik me, maar volgens mij kent MSSQL geen BIT_AND.

Today's subliminal thought is:


Verwijderd

Annie schreef op zaterdag 23 juni 2007 @ 21:42:
Misschien vergis ik me, maar volgens mij kent MSSQL geen BIT_AND.
Je vergist je niet ;). Google geeft maar 500 hits bij mssql + bit_and, en MSDN kent het ook niet, dus ja.
Pagina: 1