PDA

Bekijk Volledige Versie : MySQL query met AND OR - vraagje



lucas
25/02/06, 03:00
Ik heb een mysql query op een webpagina die niet de gewenste resultaten
opleverd. Ik doe waarschijnlijk wel iets verkeerd, maar ik vind niet
direct wat.

Kijk, het resultaat kan je hier testen :
www.lucasnet.be/zoek.php
en vul bijvoorbeeld het woord kronieken in het zoekvenster van "zoeken
naar boekinformatie". Verschillende velden worden teveel vermeld.



De query ziet er zo uit :

SELECT bnaam, rnaam, boekindex, inhoudtekst, naam, voornaam,
lboek.auteurid, lauteur.auteurid FROM lboek, lauteur
WHERE lboek.auteurid = lauteur.auteurid AND
bnaam LIKE '%$naamvantekstveld%' OR
rnaam LIKE '%$naamvantekstveld%' OR
inhoudtekst LIKE '%$naamvantekstveld%'
ORDER BY boeknaam ASC


De $naamvantekstveld is wat er in het zoekvenster ingetypd wordt.

Dit gedeelte "WHERE lboek.auteurid = lauteur.auteurid" dient gewoon
om de naam van de auteur op te halen uit de lauteur-tabel omdat die
niet in de lboek-tabel staat.

Ik vermoed dat ik iets verkeerd doe met de AND en OR operatoren.


Met vriendelijke groeten,

Lucas
www.lucasnet.be

Erik Baas
25/02/06, 03:00
lucas wrote:
>
> Ik heb een mysql query op een webpagina die niet de gewenste resultaten
> opleverd. Ik doe waarschijnlijk wel iets verkeerd, maar ik vind niet
> direct wat.
>
> Kijk, het resultaat kan je hier testen :
> www.lucasnet.be/zoek.php
> en vul bijvoorbeeld het woord kronieken in het zoekvenster van "zoeken
> naar boekinformatie". Verschillende velden worden teveel vermeld.

> SELECT bnaam, rnaam, boekindex, inhoudtekst, naam, voornaam,
> lboek.auteurid, lauteur.auteurid FROM lboek, lauteur
> WHERE lboek.auteurid = lauteur.auteurid AND
> bnaam LIKE '%$naamvantekstveld%' OR
> rnaam LIKE '%$naamvantekstveld%' OR
> inhoudtekst LIKE '%$naamvantekstveld%'
> ORDER BY boeknaam ASC

> Ik vermoed dat ik iets verkeerd doe met de AND en OR operatoren.

De AND- en OR operatoren worden in de (voor jou) verkeerde volgorde
toegepast. Als je haakjes gebruikt werkt het wel:

SELECT ... FROM ... WHERE cond1 AND (cond2 OR cond2 OR cond3)

--
Erik.

Rene Pijlman
25/02/06, 03:00
lucas:
>Ik vermoed dat ik iets verkeerd doe met de AND en OR operatoren.

http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html

--
René Pijlman

Wat wil jij worden? http://www.carrieretijger.nl

lucas
25/02/06, 03:00
Erik Baas schreef:
> lucas wrote:
>> Ik heb een mysql query op een webpagina die niet de gewenste resultaten
>> opleverd. Ik doe waarschijnlijk wel iets verkeerd, maar ik vind niet
>> direct wat.
>>
>> Kijk, het resultaat kan je hier testen :
>> www.lucasnet.be/zoek.php
>> en vul bijvoorbeeld het woord kronieken in het zoekvenster van "zoeken
>> naar boekinformatie". Verschillende velden worden teveel vermeld.
>
>> SELECT bnaam, rnaam, boekindex, inhoudtekst, naam, voornaam,
>> lboek.auteurid, lauteur.auteurid FROM lboek, lauteur
>> WHERE lboek.auteurid = lauteur.auteurid AND
>> bnaam LIKE '%$naamvantekstveld%' OR
>> rnaam LIKE '%$naamvantekstveld%' OR
>> inhoudtekst LIKE '%$naamvantekstveld%'
>> ORDER BY boeknaam ASC

> De AND- en OR operatoren worden in de (voor jou) verkeerde volgorde
> toegepast. Als je haakjes gebruikt werkt het wel:
>
> SELECT ... FROM ... WHERE cond1 AND (cond2 OR cond2 OR cond3)

Bedankt Erik,

Inderdaad de haakjes rond de OR condities waren de sleutel.
Alles werkt nu maar wens.

Met vriendelijke groeten,

Lucas
www.lucasnet.be