CASE -kuvaus
SQL -kyselyt
Liitokset
Laskenta
Muut
Ehtoja voit yhdistää AND ja OR operaattorien avulla. Käytä tarvittaessa sulkuja jos et ole aivan varma Boolen algebran toiminnasta. Boolen -operaattoreiden suoritusjärjestys on NOT, OR ja AND.
hae tuotteet, joiden laatu on KKARRED2 tai KKARREDN2 JA pituus 200 cm ja 220 cm välillä:
SELECT *
FROM Block
WHERE qualityID = 'KKARRED2' OR qualityID = 'KKARREDN2' AND len BETWEEN 200 AND 220 ;
Kyselyn tuloksesta huomataan ettei kysely ole oikein: se hakee myös alle 200 cm pitkiä blokkeja. Eli itse asiassa kysely hakee kaikki KKARRED2 -laatua olevat blokit riippumatta niiden pituudesta:
WHERE ( qualityID = 'KKARRED2') OR ( qualityID = 'KKARREDN2' AND len BETWEEN 200 AND 220) ;
ja tämän lisäksi käyttäjän tarkoittamat KKARREDN2 -laatuiset blokit!
Kysely tulisi suluttaa siten, että qualityID kentästä muodostuu yksi ehto ja pituusehdosta toinen:
SELECT *
FROM Block
WHERE ( qualityID = 'KKARRED2' OR qualityID = 'KKARREDN2' ) AND ( len >= 200 AND len>=220 );
Otetaan vielä toinen esimerkki.
hae tuotteet, joiden laatu on KKARRED2 JA joiden pituus on enintään 200 cm tai vähintään 300 cm:
SELECT *
FROM Block
WHERE qualityid='KKARRED2' AND len <= 200 OR len>=300;
on eri asia kuin sulutettu kysely
SELECT *
FROM Block
WHERE qualityid='KKARRED2' AND ( len <= 200 OR len>=300 );
koska OR -operaattori määritellään ennen AND -operaattoria. Eli ensimmäinen kysely hakee tulosjoukkoon ensin kaikki blokit, joiden pituus on vähintään 300 cm ja sen lisäksi kaikki KKARRED2 -laatua olevat tuotteet, joiden pituus on enintään 200 cm. Eli sulutettuna:
SELECT *
FROM Block
WHERE ( qualityid='KKARRED2' AND len <= 200 ) OR ( len>=300 );
Suluta AINA kun käytät OR- ja AND -operaattoreita samassa SQL -lauseessa!