Door
roy helmich
op 11-08-2015 00:31
gewijzigd op 11-08-2015 00:35
2.274 views
$qwy = mysql_query("SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND `item_id`=2"); OR
("SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND `item_id`=9");
$free = mysql_fetch_object($qwy);
Hoe zorg ik ervoor dat wanneer `item_id`=2" niet vindbaar is. Maar `item_id`=9" of beide wel, dat het dan die selecteert?
Nu selecteert hij alleen `item_id`=2 en verschijnt er geen query voor item_id`=9
Ik probeer het namelijk zo in te stellen:
wanneer de `item_id`=2 tabel op 0 staat dan selecteert hij item_id`=9 (indien deze wel hoger dan 0 is) of wanneer beide hoger dan 0 zijn.
Nu selecteert hij alleen `item_id`=2 en verschijnt er geen query voor item_id`=9
Dat komt waarschijnlijk omdat de naam van de owner van item_id 9 niet overeen komt met $_SESSION['naam'], deze conditie leg je zelf op dat het resultaat-record daar aan moet voldoen.
Ben je nagegaan dat de owner klopt?
Snap je hoe AND en OR werken?
[quote="Roy helmich op 11/08/2015 01:07:29"]Nu selecteert hij alleen `item_id`=2 en verschijnt er geen query voor item_id`=9
Dat komt waarschijnlijk omdat de naam van de owner van item_id 9 niet overeen komt met $_SESSION['naam'], deze conditie leg je zelf op dat het resultaat-record daar aan moet voldoen.
Ben je nagegaan dat de owner klopt?
Snap je hoe AND en OR werken?
[/quote]
Hallo, ja ik begrijp een beetje hoe de OR, AND werken. Ik probeer dus twee dingen uit de database te selecteren en deze in 1 query weer te geven.
Dus item_2 (bv 50 in database) en item_2 (bv 20 in database) en dat die twee dan opgeteld worden bij elkaar. Of maak ik nou een omweg?
SELECT id, price, owner
FROM items
WHERE owner = '{$_SESSION['naam']}'
AND (item_id = 9 OR item_id = 2)
Dit wil zeggen:
Geef mij de id, price en owner kolommen
van de tabel items
waar de owner gelijk is aan $_SESSION['naam']
en het item_id gelijk is aan 9 of 2.
Met name die haken op de laatste regel zijn veel bepalend.
De query geeft dus resultaten terug voor de volgende twee gevallen:
1. de owner is gelijk aan $_SESSION['naam'] EN het item_id is gelijk aan 9
OF
2. de owner is gelijk aan $_SESSION['naam'] EN het item_id is gelijk aan 2
In beide gevallen moet de owner dus gelijk zijn aan $_SESSION['naam'], mogelijk ontstaat daar de verwarring?
Vandaar mijn eerdere vragen: Ben je nagegaan dat de owner klopt?
Hiermee bedoelde ik dus: heb je geverifieerd dat zowel bij item_id 2 alsmede item_id 9 owner overeenkomt?
Snap je hoe AND en OR werken?
Deze logica komt vrij nauw.
Er is een wereld van verschil tussen:
A AND (B OR C)
en
(A AND B) OR C
waarbij A, B en C verschillende condities zijn.
De eenvoudigste manier om dit uit te pluizen is het uitschrijven van een waarheidstabel:
.A | B | C | A AND (B OR C) | (A AND B) OR C
---+---+---+----------------+---------------
0 | 0 | 0 | 0 | 0
---+---+---+----------------+---------------
0 | 0 | 1 | 0 | 1
---+---+---+----------------+---------------
0 | 1 | 0 | 0 | 0
---+---+---+----------------+---------------
0 | 1 | 1 | 0 | 1
---+---+---+----------------+---------------
1 | 0 | 0 | 0 | 0
---+---+---+----------------+---------------
1 | 0 | 1 | 1 | 1
---+---+---+----------------+---------------
1 | 1 | 0 | 1 | 1
---+---+---+----------------+---------------
1 | 1 | 1 | 1 | 1