login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > MySQL


Gegevens:
Geschreven door:
Tuinstoel
Moeilijkheidsgraad:
Gemakkelijk
Hits:
12528
Punten:
Aantal punten:
 (5)
Aantal stemmen:
2
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (4)
 



Tutorial:

AND en OR

1. AND en OR statements
2. Vergelijkenis met if/else statement
3. Voorbeelden AND statement
4. Voorbeelden OR statement
5. AND en OR combineren


1. AND en OR statements


AND en OR zijn een soort van achterhangsel op het WHERE statement, deze moet je dus kennen. Met AND kun je een tweede conditie stellen en een voorwaarde daaraan. Met OR word geduid op de Nederlandse vertaling van het woord, of. Dus als je een voorwaarde stelt maar het kan ook een andere zijn, gebruik je OR. In plaats van OR kun je ook || gebruiken, en bij AND kun je && gebruiken. Deze worden alleen niet vaak gebruikt, en je kunt het voor de duidelijkheid ook maar beter bij AND en OR laten.


2. Vergelijkenis met if/else statement


AND en OR kun je ook tegenkomen in een if/else statement, het heeft in principe ook dezelfde werking, hieronder een voorbeeldje hoe het met een if/else constructie zou kunnen.

<?
if($_POST['naam'] == 'Tuinstoel' AND $_POST['wachtwoord'] == 'geheim')
    { echo
'Je bent Tuinstoel.'; }
else
    { echo
'Je bent Tuinstoel niet.'; }
?>

Maar dan nu wat echte voorbeelden hoe het in MySQL gaat.


3. Voorbeelden AND statement


Stel we hebben een tabel, zoals hieronder staat afgedrukt in de databank.

id voornaam achternaam leeftijd
1 René Willemsen 14
2 Joël Verheyen 17
3 Dennis Braak, van 15
4 Maarten Ureel 15

En met deze tabel gaan we nu even wat query's uitvoeren om te filteren op enkele dingen.

SELECT * FROM `tabel` WHERE `voornaam` = 'René' AND `leeftijd` >= 14

Deze code haalt de rijen uit de databank waar de voornaam gelijk is aan René en waar de leeftijd hoger of gelijk is aan 14. In dit geval zal hij de rij met id nummer 1 geven als resultaat.

SELECT * FROM `tabel` WHERE `voornaam` = 'René` AND `achternaam` = 'Verheyen'

Met deze query is opzich niets mis mee, maar het is nu zo dat de voornaam René en de achternaam Verheyen wel in de databank voorkomt, maar dat er niet in dezelfde rij, en daarom zal hij geen enkele rij retourneren.

SELECT * FROM `tabel` WHERE `voornaam` = 'Maarten' AND `achternaam` = 'Ureel' AND `leeftijd` > 13

En je snapt het nu denk ik al, deze was alleen om aan te duiden dat AND vaker mag worden gebruikt in een query. Deze query zal overigens resulteren in de rij met id nummer 4.


4. Voorbeelden OR statement


Zoals al uitgelegd in de intro betekent OR niet meer dan OF in het nederlands, dus dit OF dat. Nu maar gelijk dan wat voorbeelden om een idee te creeëren hoe het in elkaar steekt.

SELECT * FROM `tabel` WHERE `voornaam` = 'René` OR `achternaam` = 'Ureel'

Dat zal resulteren in 2 rijen, namelijk die met id nummer 1 en 4, want in die rijen bevindt zich de voornaam René of de achternaam Ureel.

SELECT * FROM `tabel` WHERE `voornaam` = 'René' OR `leeftijd` = 17 OR `id` = 3

Bij de bovenstaande query zullen er 3 mogelijkheden worden gegeven:
  • de naam moet gelijk zijn aan René
  • of de leeftijd moet gelijk zijn aan 17
  • of het id moet gelijk zijn aan 3
Dit zal resulteren in 3 opgevraagde rijen waaraan deze criteria voldoen.


5. AND en OR combineren


AND en OR kun je ook nog eens combineren, dat kan soms handig zijn.

SELECT * FROM `tabel` WHERE `voornaam` = 'René' AND `achternaam` = 'Willemsen' OR `leeftijd` = 17

Hier vraagt hij dus de rijen op waar de voornaam gelijk is aan René en de achternaam gelijk is aan Willemsen of waar de leeftijd gelijk is aan 17. Dit zal dus resulteren in de 2 rijen met id 1 en 2.

Maar als je AND en OR combineert, dan kan daar nog eens een verschil in zitten. Met dank aan FangorN voor het verschil te melden.

In MySQL kun je met haakjes werken, netzoals je met wiskunde doet, omdat eerst daar het resultaat uit te halen, en dan pas de sommen die daar na komen. Zie de volgende voorbeelden

SELECT * FROM `tabel` WHERE (`voornaam` = 'René' AND `achternaam` = 'Willemsen') OR `leeftijd` = 17

Dit levert de rijen met id nummer 1 en 2 op, omdat bij de een de voornaam en de achternaam gelijk zijn aan René en Willemsen of de leeftijd moet gelijk zijn aan 17, in dit geval rij 2. Dus in het resultaat levert hij rij 1 en 2 op.

SELECT * FROM `tabel` WHERE `voornaam` = 'René' AND (`achternaam` = 'Willemsen' OR `leeftijd` = 17)

Dit zal enkel de rij met id 1 terug geven, omdat de voornaam gelijk is aan René en de achternaam is gelijk aan Willemsen of de leeftijd is gelijk aan 17, dus 2 keuze's in principe.

« Vorige tutorial : Nette SQL query's Volgende tutorial : Foreign Keys: Wat zijn het en hoe gebruik ik ze? »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.027s