WHERE – Auswahl eingrenzen

Mit dem WHERE-Befehl können wir unsere Auswahl bei einem SELECT begrenzen:

SQL

SELECT * FROM `kunden` WHERE name = 'Peter Paulus'

PHP

<?php
	//Verbindung zur Datenbank herstellen
	mysql_connect("localhost", "Benutzername","Passwort") or die ("Verbindung nicht möglich");
	mysql_select_db("Datenbank-Name") or die ("Datenbank existiert nicht");

	//Alle Kundendaten selektieren
	$result = mysql_query("SELECT * FROM `kunden` WHERE name = 'Peter Paulus'");
?>

Ergebnis:

Anstelle einfach alle Einträge zu selektieren, können wir mit WHERE auswählen, welche Einträge wir haben wollen. Dabei können wir die einzelnen Spalten einer Tabelle ansprechen und nur Werte rausholen, die bestimmten Kriterien entsprechen. Möchtest du z.b. aus unserer Kunden-Tabelle alle Kunden, deren Name mit „M“ beginnt, hilft folgender SQL-Query weiter:

SELECT * FROM  `kunden` WHERE name LIKE  'M%'

Da das „=“-Zeichen nur für genau zutreffende Werte steht, nutzen wir hier „LIKE“. Zusätzlich müssen wir mit dem Wildcard-Operator rumbasteln, also der erste Buchstabe soll ein „M“ sein, alles was danach kommt ist egal (%). Wenn einfach irgendwo im Namen des Kunden ein „M“ vorkommen soll, sieht der Query so aus („M“ von „%“ eingeschlossen):

SELECT * FROM  `kunden` WHERE name LIKE  '%M%'

Leider haben wir in unserer Kundentabelle keine Zahlen, denn mit WHERE könnte man z.b. alle Kunden selektieren, die jünger als 50 sind:

SELECT * FROM  `kunden` WHERE alter < 50

(funktioniert natürlich nicht, da wir keine Spalte „Alter“ haben)

Wir können auch mit AND und OR arbeiten und alle Kunden selektieren, die zwischen 40 und 49 Jahre alt sind:

SELECT * FROM  `kunden` WHERE alter >= 40 AND alter < 50

Oder alle, deren Name mit einem „L“ oder „M“ beginnt:

SELECT * FROM `kunden` WHERE name > 'L%' OR name < 'O%'

Oder deren Adresse entweder mit einem „D“ oder einem „W“ beginnt:

SELECT * FROM `kunden` WHERE adresse LIKE 'D%' OR adresse LIKE 'W%'

WHERE Fazit

WHERE wirst du sehr häufig brauchen, denn die Grundbefehle (SELECT, UPDATE, DELETE) sind ohne WHERE schlicht zu allgemein. Lediglich das INSERT kommt ganz gut ohne WHERE aus.

hier geht's weiter...



Kommentare


Da gibt es offenbar einen Fehler.

Ich zitiere:

"
Oder alle, deren Name mit einem “L” oder “M” beginnt:
SELECT * FROM `kunden` WHERE name > 'L%' AND name < 'O%'
"

Bei dem SQL Befehl müsste es doch dann lauten:

name LIKE 'L%' OR name LIKE 'M%'

Wenn mich nicht alles täuscht.


Ja du hast recht, ist korrigiert :)

Kommentar schreiben

Kommentar

Hilfe:

<strong>fettgedruckt</strong> => fettgedruckt

<em>kursiv</em> => kursiv

<a href="http://wordpress.lernenhoch2.de">Link</a> => Link

[code]<?php echo 'hello world'; ?>[/code]

*

Feedback Formular