[SQL] where statement groeperen

Pagina: 1
Acties:

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
Ik heb deze SQL query:

SQL:
1
2
3
4
5
SELECT useragent_browser, useragent_os, useragent_robot
FROM useragents
WHERE useragent_robot = 0 AND useragent_id = 1430
AND (useragent_os >= 6 AND useragent_os <= 8 AND useragent_browser >= 23 AND useragent_browser <= 28)
OR (useragent_browser >= 60 AND useragent_browser <= 69 OR useragent_browser >= 105 AND useragent_browser <= 107)
Alleen werkt die groupering niet.
useragent_robot moet altijd 0 zijn en useragent_id moet altijd 1430 zijn.
Dan moet of regel 4 of regel 5 true zijn.
MS SQL filtert die haakjes voor groupering weg.

Hoe kan ik dit juist doen, en hoe werkt die groepering van WHERE statements precies? :?

[ Voor 8% gewijzigd door Urk op 22-06-2006 22:20 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Volgens mij heb je nu de ands en de or op hetzelfde niveau staan.
Een haakje open erbij na de and op regel 4 en een haakje sluiten aan het eind en het zou moeten werken.

Who is John Galt?


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:53
Met een WHERE filter je, groeperen is weer wat anders.
Hoezoe, de haakjes wegfilteren ? AFAIK wordt daar rekening mee gehouden.
Zowiezo is het moeilijk om nu na te gaan wat je precies wil.

Wil je alle records waarvoor useragent_os >= 6 en useragent_os <= 8
en
alle records waarvoor useragent_browser >= 26 en useragent_browser <= 28 of
useragent_browser >= 60 en ....

Ttz, het probleem zit 'm iig in de haakjes. Die zal je juist moeten zetten naar gelang de situatie die jij wil.

https://fgheysels.github.io/


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
justmental schreef op donderdag 22 juni 2006 @ 22:31:
Volgens mij heb je nu de ands en de or op hetzelfde niveau staan.
Een haakje open erbij na de and op regel 4 en een haakje sluiten aan het eind en het zou moeten werken.
Thanks, dit werkt inderdaad!
Echter wat ik wel vreemd vindt is dat zodra ik de query van een Response.Write in ASP kopieer naar de SQL Query Manager hij dan geconverteerd wordt naar:
SQL:
1
2
3
4
5
SELECT useragent_browser, useragent_os, useragent_robot
FROM useragents
WHERE (useragent_robot = 0) AND (useragent_id = 1430)
AND (useragent_browser >= 23) AND (useragent_os >= 6) AND (useragent_os <= 8) AND (useragent_browser <= 28)
OR (useragent_robot = 0) AND (useragent_id = 1430) AND (useragent_browser >= 60 AND useragent_browser <= 69 OR useragent_browser >= 105 AND useragent_browser <= 107)

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
whoami schreef op donderdag 22 juni 2006 @ 22:35:
Met een WHERE filter je, groeperen is weer wat anders.
Hoezoe, de haakjes wegfilteren ? AFAIK wordt daar rekening mee gehouden.
Zowiezo is het moeilijk om nu na te gaan wat je precies wil.

Wil je alle records waarvoor useragent_os >= 6 en useragent_os <= 8
en
alle records waarvoor useragent_browser >= 26 en useragent_browser <= 28 of
useragent_browser >= 60 en ....

Ttz, het probleem zit 'm iig in de haakjes. Die zal je juist moeten zetten naar gelang de situatie die jij wil.
Ja sorry, dat bedoel ik, maar ik noem het even groeperen omdat ik de where statements groepeer.
Ik wil dat OF:

useragent_browser >= 23 EN useragent_os >= 6 EN useragent_os <= 8 EN useragent_browser <= 28

OF

(useragent_browser >= 60 EN useragent_browser <= 69) OF (useragent_browser >= 105 EN useragent_browser <= 107

True is

useragent_robot moet altijd 0 zijn en useragent_id altijd 1430

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 18-02 10:22

NetForce1

(inspiratie == 0) -> true

Dat moet niet zo ingewikkeld zijn toch?
SQL:
1
2
3
4
5
6
7
8
9
SELECT useragent_browser, useragent_os, useragent_robot
FROM useragents
WHERE 
    (useragent_robot = 0 AND useragent_id = 1430) 
    AND (
        (useragent_browser BETWEEN 23 AND 28 AND useragent_os BETWEEN 6 AND 8)
        OR
        (useragent_browser BETWEEN 60 AND 69 AND useragent_browser BETWEEN 105 AND 107)
    )

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
NetForce1 schreef op donderdag 22 juni 2006 @ 23:24:
Dat moet niet zo ingewikkeld zijn toch?
SQL:
1
2
3
4
5
6
7
8
9
SELECT useragent_browser, useragent_os, useragent_robot
FROM useragents
WHERE 
    (useragent_robot = 0 AND useragent_id = 1430) 
    AND (
        (useragent_browser BETWEEN 23 AND 28 AND useragent_os BETWEEN 6 AND 8)
        OR
        (useragent_browser BETWEEN 60 AND 69 AND useragent_browser BETWEEN 105 AND 107)
    )
Tnx! :) Die is beter inderdaad!
Pagina: 1