hakuniei ota toimiakseen, ilmeisesti tuon IN jälkeen ei voi käyttää pakottavia hakurutineeja? Jotain väärin kuitenkin...
SELECT * FROM taulu WHERE vari IN ('punainen', 'sininen', 'keltainen', 'vihreä') AND malli = 'pyöreä' AND hinta = 'halpa' AND postitus = 'ilmainen'
Eli tarkoitus on hakea kaikki rivit taulusta, jossa vari on joko punainen, sininen, keltainen tai vihreä ja malli on pyöreä, hinta halpa ja postitus ilmainen...
Tämä palauttaa tyhjän haun vaikka noihin osuvia kamoja löytyy. Jos lyhennän hakua pelkkään tähän:
SELECT * FROM taulu WHERE vari IN ('punainen', 'sininen', 'keltainen', 'vihreä')
niin toimii. Miten järjestän vai tarvinko muiita sql funktioita että saan haluamani haettua?
EDIT Copy/paste fiba.. Nyt on jotain järkeä ongelmassa.
Laittamasi kyselyt ovat (edit: olivat vielä äsken) täsmälleen identtiset, joten olisi aika outoa, jos toinen toimisi ja toinen ei. Tuo kysely myös näyttää ihan oikealta. IN-vertailu ei myöskään rajoita kyselyn rakennetta mitenkään, vaan sitä voi käyttää kaikissa kohdissa, joissa voisi käyttää myös esim. =-vertailua.
Lisätään nyt vielä että
SELECT * FROM taulu WHERE malli = 'pyöreä' AND hinta = 'halpa' AND postitus = 'ilmainen'
Toimii myös mutta tuo ensimmäinen esimerkki ei toimi. Eli jaettuna se kahteen erilliseen kyselyyn kaikki toimii.
Kyllä virheen täytyy olla jossain muualla, koska kysely on ihan kelvollinen, kuten jo sanoin.
Oletko varma, että taulussa on oikeanlainen rivi? Entä millä tavalla tämä "palauttaa tyhjän haun" – tuleeko tosiaan tyhjä tulosjoukko (rivimäärä nolla) vai tapahtuuko haussa virhe (rajapinnasta riippuen tuloksena esim. FALSE tai NULL)? Saatko vastaavan haun toimimaan, jos vaihdat IN-ehdon tilalle vaikka vari = 'punainen'?
Eli toimii jos vari = 'punainen' ei toimi jos vari = 'vihreä'. Tähän sain homman jäljitettyä ja heivaamalla ääkköset pois sain koko homman toimimaan. Ihmettelen sitä että toisinaan ääkkösiä sisältävä toimi suoraan tuolla IN -vertailulla ja toisinaan ei. Sen sijaan = toimi myös ääkkösten kanssa joka kerta. Kanta on utf-8 samoin kuin php sivutkin. Luulisi toimivan ääkkösten kanssa suoraan mutta selvästi sössin homman kuitenkin jotenkin jossain. Surkeasti jäljitetty fixi mutta nyt kuitenkin toimii.
Onhan yhteys myös utf-8, vai joku muu?
Laita kaikki ominaisuudet esim. nyt värit omiin tauluihin ja viittaa niihin värin omalla id:llä, joka on muuten tietysti kasvava.
Toitsu kirjoitti:
Ihmettelen sitä että toisinaan ääkkösiä sisältävä toimi suoraan tuolla IN -vertailulla ja toisinaan ei.
Tämä asia ei nyt selvästikään liity INiin millään tavalla. Saat tasan saman lopputuloksen kirjoitatko
vari IN ('punainen', 'vihreä')
vai
(vari='punainen' OR vari='vihreä')
Eli jos välillä toimii ja välillä ei toimi, niin johtuu muusta kuin INistä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.