[VB.NET & JetSQL]Alle mogelijkheden nodig in SELECT query?

Pagina: 1
Acties:

  • bramseltje
  • Registratie: September 2001
  • Laatst online: 23-07 23:59
ik heb een tabel met onderdelen, die ik op typenummer selecteer. Omdat de typenummers door de gebruiker in een aparte lijst opgegeven kunnen worden is niet zeker of het een compleet nummer, of een deel van het nummer is.

Bij de WHERE clause zoals hieronder wordt het onderdeel alleen geselecteerd als er maar een deel van het nummer wordt opgegeven.

Visual Basic:
1
2
3
"SELECT Sum([stuklijst algemeen].Stuksprijs) As Som " & _
"FROM [stuklijst algemeen] " & _
"WHERE ([stuklijst algemeen].Type Like '%" & scTypes(0) & "%') "

Als ik nu alle mogelijkheden wil afvangen, moet ik dan een query maken die alle 4 de mogelijkheden (het begin van een nummer, en einde, het hele nummer, of het midden) afgaat?

dus:
SQL:
1
2
3
4
WHERE ([stuklijst algemeen].Type Like '%blabla%' 
    OR [stuklijst algemeen].Type Like '%blabla' 
    OR [stuklijst algemeen].type Like 'blabla%' 
    OR [stuklijst algemeen].Type like 'blabla')


En wordt de query hier niet veel trager van? Als alle 4 de mogelijkheden gecontroleerd moeten worden (in het ergste geval)

Het is trouwens niet de complete query, maar die is een beetje rommelig (* bramseltje is noob...) dus die laat ik hier maar niet zien :+

Hmm, vergeten te vertellen, ik heb het bovenstaande geprobeerd, maar het lijkt niet te werken... Het is wel een geldige query, maar het resultaat is niet wat ik zou verwachten... Maar then again, * bramseltje is ook maar noob...

Misschien iemand die een beter idee heeft?

[ Voor 16% gewijzigd door bramseltje op 17-11-2003 16:31 . Reden: vergeten... ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Nee, aangezien je LIKE '%blaa%' doet. Er wordt dus gekeken of blaa in dat veld type terug te vinden is (zowel in het begin, op het einde als in het midden).
Je moet wel beseffen dat een LIKE '%blaa%' traag gaat zijn, aangezien er dan geen indexen kunnen gebruikt worden. Bij een LIKE 'blaa%' kunnen er dan weer wel indexen gebruikt worden.

Daarnaast vind je hier nog een tip ivm het opbouwen van je query

https://fgheysels.github.io/


  • bramseltje
  • Registratie: September 2001
  • Laatst online: 23-07 23:59
Hmm. Op een aantal plaatsen lees ik dat de % wildcard een of meer tekens weergeeft. Dus niet nul of meer tekens. Als het dan gewoon met bla begint zal %bla% dit dan niet vinden...

Maar die parameters in query zal ik 's ff gaan onderzoeken... tnx ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Bramseltje schreef op 17 november 2003 @ 16:41:
Hmm. Op een aantal plaatsen lees ik dat de % wildcard een of meer tekens weergeeft. Dus niet nul of meer tekens. Als het dan gewoon met bla begint zal %bla% dit dan niet vinden...
Test het gewoon uit.
Als je een
code:
1
select veld from tabel where veld like '%bla%'

doet, dan worden records waarvoor veld bv 'blaat', 'abla', ablabla' is, gewoon teruggegeven.

https://fgheysels.github.io/


  • bramseltje
  • Registratie: September 2001
  • Laatst online: 23-07 23:59
Die parametrized queries zijn te lastig in te passen. Moet ik aan mijn class (om als thread uit te voeren) allerlei public properties gaan toevoegen, omdat ik geen parameters aan de start opdracht voor de thread kan meegeven (VB.NET)

En toch zit er iets vreemds in deze queries:
SQL:
1
2
3
SELECT Sum([stuklijst algemeen].Stuksprijs ) As Som
FROM [stuklijst algemeen]
WHERE [stuklijst algemeen].Type Like '%SA37DT71D4%'

levert mij een andere waarde (0) op dan
code:
1
2
3
SELECT Sum([stuklijst algemeen].Stuksprijs ) As Som
FROM [stuklijst algemeen]
WHERE [stuklijst algemeen].Type Like '%DT71D4%'

welke mij gewoon de prijs van het artikel oplevert...

De volledige omschrijving is:
code:
1
SA37DT71D4 M4 As * kk** 0,37kW **r/min IP65 incl. reactiearm


Als ik in Access dezelfde query uitvoer levert mij dat hetzelfde op (natuurlijk wel de wildcards in * veranderd), namelijk in het tweede geval gewoon de prijs, en in het eerste geval 0...

Iemand daar een idee over?

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Doe eens ipv al met die SUM te werken, een gewone query zodanig dat je ziet wat er gereturned wordt.

https://fgheysels.github.io/


  • bramseltje
  • Registratie: September 2001
  • Laatst online: 23-07 23:59
|:(

Ik zit niet op te letten... De prijs van het ene artikel is 0, dus geen wonder dat ik dan geen prijs terug krijg... En er zijn meerdere artikelen met DT71D4 in het artikel...

* bramseltje gaat zich ff in een hoekje zitten schamen
Pagina: 1