Tutorials >
MySQL >
AND en OR
|
Gepost op: 08 januari 2005 - 22:56 |
|
|
|
Moderator
 |
Let op het volgende verschil:
SELECT * FROM `tabel` WHERE (`voornaam` = 'René' AND `achternaam` = 'Willemsen') OR `leeftijd` = 17
SELECT * FROM `tabel` WHERE (`voornaam` = 'René' AND `achternaam` = 'Willemsen') OR `leeftijd` = 17
levert de rijen met id 1 en 2 op.
SELECT * FROM `tabel` WHERE `voornaam` = 'René' AND (`achternaam` = 'Willemsen' OR `leeftijd` = 17)
SELECT * FROM `tabel` WHERE `voornaam` = 'René' AND (`achternaam` = 'Willemsen' OR `leeftijd` = 17)
levert alleen de rij met id 1 op.
Veel AND's en OR's door elkaar kunnen verraderlijk zijn. |
|
|
|
Gepost op: 09 januari 2005 - 10:50 |
|
|
|
PHP expert
 |
Ik zal dat er maar eens toevoegen, dat heb ik nooit geweten met die haakjes. |
|
|
|
Gepost op: 09 januari 2005 - 16:57 |
|
|
|
Moderator
 |
Nooit gehoord van waarheidstabellen (truth tables) ?
0 is false, 1 is true
a | b | c | (a && b) || c | a && (b || c)
--+---+---+---------------+--------------
0 | 0 | 0 | 0 | 0
0 | 0 | 1 | 1 | 0
0 | 1 | 0 | 0 | 0
0 | 1 | 1 | 1 | 0
1 | 0 | 0 | 0 | 0
1 | 0 | 1 | 1 | 1
1 | 1 | 0 | 1 | 1
1 | 1 | 1 | 1 | 1
0 is false, 1 is true a | b | c | (a && b) || c | a && (b || c) --+---+---+---------------+-------------- 0 | 0 | 0 | 0 | 0 0 | 0 | 1 | 1 | 0 0 | 1 | 0 | 0 | 0 0 | 1 | 1 | 1 | 0 1 | 0 | 0 | 0 | 0 1 | 0 | 1 | 1 | 1 1 | 1 | 0 | 1 | 1 1 | 1 | 1 | 1 | 1
Als twee predikaten (boolean statements) voor alle waarden hetzelfde zijn, zijn de predikaten equivalent. Je kan zo meteen zien dat (a && b) || c en a && (b || c) twee compleet verschillende dingen zijn. |
|
|
|
Gepost op: 09 januari 2005 - 17:08 |
|
|
|
PHP expert
 |
Hm interessant, nooit geweten, maar ik ben nog jong . |
|
|
Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties. |
|
|
|