Condities (WHERE)
1 bericht
• Pagina 1 van 1
Condities (WHERE)
Inleiding
In dit artikel zal ik uitleggen hoe je condities kunt stellen aan een query. Zo kun je gerichter gegevens opvragen uit je database.
WHERE
Wanneer we een query uitvoeren willen we niet altijd alle gegevens ophalen uit de database. Je kunt dit doen door een voorwaarde te stellen in de query. Standaard opbouw van een query met WHERE:
MYSQL
Let op: wanneer de waarde een getal is die je de quotes weg te laten. Anders wordt de waarde als tekst opgevat.
We hebben bijvoorbeeld de tabel leden. Deze tabel bevat de volgende gegevens:

Stel dat we alle leden willen opvragen die als voornaam Lisette hebben. Onze query zal er als volgt uitzien:
MYSQL
Dit zal het als resultaat hebben:

Operators
Wanneer je de WHERE gebruikt vergelijk je twee waarden. Hiervoor heb je verschillende, zogeheten, operators. De operators die je kunt gebruiken:
MYSQL
Het resultaat:

LIKE
Met de like kunnen zoeken naar waarden met een bepaald patroon. Als wildcard (elk willekeurig teken) gebruiken we in MySQL het procentteken: [ % ]. Ik kan dit het makkelijkste uitleggen aan de hand van een voorbeeld.
Uit de tabel leden willen alle mensen opvragen waarvan de voornaam met de letter F begint. De query:
MYSQL
Je zal zien dat het resultaat Frans en Fred zal zijn.
IN
Wanneer je meerdere condities stelt aan een kolom kun je dat doen aan de van IN. Wederom een query om het duidelijk uit te maken. We willen alle mensen uit de database halen waarvan de achternaam Hendriks of van Geuzen is. De query:
MYSQL
Het resultaat:

Meerdere condities
Het is ook mogelijk om meerdere condities te stellen. Dat doen we metAND en/of OR . Zo kun je alle mensen opvragen die Lisette als voornaam hebben en meer of gelijk aan 10 punten hebben. De query:
MYSQL
Het resultaat zal enkel Lisette Boonstra zijn.
Nog een voorbeeld. We zoeken alle mensen die Erik als naam hebben óf 2 punten hebben.
MYSQL
Het resultaat:

NOT
Het kan ook zijn dat we gegevens willen weten waarbij een bepaalde waarde juist niet mag voorkomen. We gebruiken de queries van het kopje LIKE en IN, maar nu draaien we ze om.
MYSQL
MYSQL
Je zal zien dat nu de omgekeerde gegevens uit de database worden gehaald.
ORDER BY
Het kan handig zijn om gegevens te sorteren, bijvoorbeeld bij een score lijst. Dit kunnen we in de query al doen. Stel dat we een ledenlijst willen maken die alfabetisch op voornaam is gesorteerd. De query:
MYSQL
Het resultaat:

We kunnen zowel oplopend als aflopend sorteren. Dat doen we door er ASC (voor oplopend) of DESC (voor aflopend) erachter te zetten. Zo kunnen we een score lijst maken met de hoogste scores bovenaan:
MYSQL
Het resultaat:

We kunnen ook sorteren op meerdere kolommen. Dat doe je simpel door ze achter elkaar te zetten en te scheiden door een komma. De kolom die als eerste staat genoemd wordt als eerste gebruikt. Een voorbeeld query:
MYSQL
LIMIT
We kunnen het aantal resultaten beperken door een limiet te stellen. Deze heeft één of twee condities. Schematisch:
MYSQL
In dit geval bepaald conditie1 vanaf waar er gestart wordt en conditie twee het aantal.
MYSQL
In geval van één conditie zal deze het aantal aangeven. Er wordt vanaf het begin gestart.
Stel we willen een top drie van beste leden. Daarvoor hebben we de volgende query nodig:
MYSQL
We kunnen ook het tweede, derde en vierde lid opvragen van de ledenlijst:
MYSQL
In dit artikel zal ik uitleggen hoe je condities kunt stellen aan een query. Zo kun je gerichter gegevens opvragen uit je database.
WHERE
Wanneer we een query uitvoeren willen we niet altijd alle gegevens ophalen uit de database. Je kunt dit doen door een voorwaarde te stellen in de query. Standaard opbouw van een query met WHERE:
MYSQL
- Code: Alles selecteren
SELECT kolom1, kolom2 FROM tabel WHERE kolom1 = 'waarde'
Let op: wanneer de waarde een getal is die je de quotes weg te laten. Anders wordt de waarde als tekst opgevat.
We hebben bijvoorbeeld de tabel leden. Deze tabel bevat de volgende gegevens:

Stel dat we alle leden willen opvragen die als voornaam Lisette hebben. Onze query zal er als volgt uitzien:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE voornaam='Lisette'
Dit zal het als resultaat hebben:

Operators
Wanneer je de WHERE gebruikt vergelijk je twee waarden. Hiervoor heb je verschillende, zogeheten, operators. De operators die je kunt gebruiken:
= : is gelijk aan;<> : is niet gelijk aan;> : is groter dan;< : is kleiner dan;>= : is groter of gelijk aan;=< : is kleiner of gelijk aan;LIKE : zoekt naar een patroon;IN : is gelijk aan (meerdere waarden).
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE punten < 6
Het resultaat:

LIKE
Met de like kunnen zoeken naar waarden met een bepaald patroon. Als wildcard (elk willekeurig teken) gebruiken we in MySQL het procentteken: [ % ]. Ik kan dit het makkelijkste uitleggen aan de hand van een voorbeeld.
Uit de tabel leden willen alle mensen opvragen waarvan de voornaam met de letter F begint. De query:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE voornaam LIKE 'F%'
Je zal zien dat het resultaat Frans en Fred zal zijn.
IN
Wanneer je meerdere condities stelt aan een kolom kun je dat doen aan de van IN. Wederom een query om het duidelijk uit te maken. We willen alle mensen uit de database halen waarvan de achternaam Hendriks of van Geuzen is. De query:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE achternaam IN ('Hendriks','van Geuzen')
Het resultaat:

Meerdere condities
Het is ook mogelijk om meerdere condities te stellen. Dat doen we met
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE voornaam = 'Lisette' AND score >= 10
Het resultaat zal enkel Lisette Boonstra zijn.
Nog een voorbeeld. We zoeken alle mensen die Erik als naam hebben óf 2 punten hebben.
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE voornaam = 'Erik' OR punten = 2
Het resultaat:

NOT
Het kan ook zijn dat we gegevens willen weten waarbij een bepaalde waarde juist niet mag voorkomen. We gebruiken de queries van het kopje LIKE en IN, maar nu draaien we ze om.
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE voornaam NOT LIKE 'F%'
MYSQL
- Code: Alles selecteren
SELECT * FROM leden WHERE achternaam NOT IN ('Hendriks','van Geuzen')
Je zal zien dat nu de omgekeerde gegevens uit de database worden gehaald.
ORDER BY
Het kan handig zijn om gegevens te sorteren, bijvoorbeeld bij een score lijst. Dit kunnen we in de query al doen. Stel dat we een ledenlijst willen maken die alfabetisch op voornaam is gesorteerd. De query:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden ORDER BY voornaam
Het resultaat:

We kunnen zowel oplopend als aflopend sorteren. Dat doen we door er ASC (voor oplopend) of DESC (voor aflopend) erachter te zetten. Zo kunnen we een score lijst maken met de hoogste scores bovenaan:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden ORDER BY punten DESC
Het resultaat:

We kunnen ook sorteren op meerdere kolommen. Dat doe je simpel door ze achter elkaar te zetten en te scheiden door een komma. De kolom die als eerste staat genoemd wordt als eerste gebruikt. Een voorbeeld query:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden ORDER BY voornaam, punten
LIMIT
We kunnen het aantal resultaten beperken door een limiet te stellen. Deze heeft één of twee condities. Schematisch:
MYSQL
- Code: Alles selecteren
SELECT * FROM tabel LIMIT conditie1, conditie2
In dit geval bepaald conditie1 vanaf waar er gestart wordt en conditie twee het aantal.
MYSQL
- Code: Alles selecteren
SELECT * FROM tabel LIMIT conditie
In geval van één conditie zal deze het aantal aangeven. Er wordt vanaf het begin gestart.
Stel we willen een top drie van beste leden. Daarvoor hebben we de volgende query nodig:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden ORDER BY punten DESC LIMIT 3
We kunnen ook het tweede, derde en vierde lid opvragen van de ledenlijst:
MYSQL
- Code: Alles selecteren
SELECT * FROM leden ORDER BY voornaam LIMIT 2,3
- Theo
- Oprichter
- Berichten: 1795
- Geregistreerd: 11 Jun 2005 17:43
- Woonplaats: in_array()
1 bericht
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast