ʫ

Sie haben den Artikel erfolgreich in den Warenkorb gelegt.
Was möchten Sie als nächstes tun?

Weiter einkaufen Zur Kasse

ȭ
quelle logo mysql

SQL von bis Abfrage mit MySQL

SQL ist mehr als eine mächtige Datenbanksprache, das ist eine Welt der unbegrenzten Möglichkeiten Daten zu selektieren und zu manipulieren. Eine SQL von bis Abfrage ist sehr oft eine Aufgabe, die tägilch vorkommt und unter verschiedenen Formen erledigt werden muss. Egal ob Sie eine SQL von bis Abfrage mit MySQL, MS Jet Engine, Oracle oder sonstige Datenbanksystemen machen müssen, ist der Aufbau fast der gleiche. Eine von bis Abfrage kommt am meisten dann vor, wenn wir Daten filtrieren müssen, die wir mittels SELECT selektieren haben. Genau die Filtrierung der Daten erlaubt uns gewisse Grenzen für bestimmte Werte zu setzen, die eine Spanne darstellen, die wir innerhalb unsere Datenansicht darstellen möchten.

Wir werden darüber bloggen wo eine SQL von bis Abfrage vorkommt, wie sie am meisten eingesetzt wird, welche Typen von Webseiten eine solche Abfrage implementieren und anhand von ein Paar Abfragebeispiele werden wir sehen, wie wir mit SQL von bis programmieren können.

Einsatz von SQL von bis Abfragen

Haben Sie die letzten Wochen nach einem Auto gesucht? Die Webportale, die Anzeigen für den Automarkt anbieten, arbeiten fast ausschließlich mit Daten, die anhand von diversen Suchkriterien selektiert und filtriert werden können. Ein Paar triviale Beispiele sind beispielsweise Fitrlierung nach Jahr. Wie sieht eine SQL von bis Abfrage nach Jahr? Zeige mir alle Autos die nach 2005 und vor 2009 hergestellt worden sind. Dies bedeutet - wir haben eine von bis Abfrage nach Jahr - zeige mir alle Autos, die von 2005 bis 2009 hergestellt sind. Ein anderes Beispiel wäre die PS Leistung - zeige mir Autos von 100 PS bis 250 PS. Bei einer solchen von bis Abfrage haben wir eine Wertspanne, die wir filtrieren können und dabei brauchen wir eine untere Grenze und eine obere grenze. In dem Fall ist das die untere Grenze 100 PS und die obere Grenze 250 PS.

Ein weiteres Beispiel kann eine Webseite wie unsere sein, die CMS Lösungen innerhalb einer Preisspanne anbietet. Wenn wir die ab Preise betrachten, so könnten wir eine von bis Abfrage so erstellen - zeige mir CMS Lösungen, die innerhalb eines Preises von 750 EUR bis 2000 EUR programmiert werden können. Es kann sein, dass es Programmierlösungen, die unterhalb oder überhalb dieses Preises sind, jedoch werden diese nach der Selektierung mit SQL nicht mehr angezeigt.

Praktische Beispiele für die Umsetzung einer SQL von bis Filtrierung

Lassen Sie uns mit dem ersten Beispiel anfangen. Dieses wir eine Reihe mit Produkten darstellen, die einen bestimmten Lagerbestand haben. Unsere Datenbank enthält 4 Produkte, die eine ID, Name und Lagerbestand haben:

Tabelle Produkte
=======================
ID      Name               Lagerbestand
1        Monitor Alt       2
2        LCD Monitor     5
3        TFT Monitor     10
4        LED Monitor     8

Angenommen, wir möchten hier nur bestimmte Produkte mit einer von bis Abfrage selektieren. Beim Beispiel oben haben wir vier Produkte, die verschiedene Lagerbestände aufweisen. Wenn wir nur die Produkte selektieren möchten, die ein Lagerbestand von 4 bis 9 haben müssen, so sollten wir folgende SQL Abfrage ausführen:

SELECT Name, Lagerbestand FROM `Produkte` WHERE Lagerbestand>3 AND Lagerbestand <10

Unser Ergebnis wird:

LCD Monitor    5
LED Monitor    8

Wir können auch durchaus dieses Abfrageergebnis sortieren, aber Ziel und Zweck dieser Übung ist eine SQL von bis Abfrage zu erzeugen. Von bis wird mit zwei WHERE Anweisungen erreicht, indem wir eine untere und eine obere Grenze festlegen. An dieser Stellen haben wir nur die Produkte mit SQL selektiert, die einen Lagerbestand über 3 und unter 10 haben. Nur zwei Produkte aus unserer Linie erfüllen das und somit erzeugen wir unser filtrierten Ergebnis.

SQL von bis AbfrageEin weiteres Beispiel ist eine von bis Abfrage nach Datum. Dies trifft zu, wenn wir eine Zeitspanne selektieren möchten, um an bestimmte Daten aus einer bestimmten Zeit zu kommen. In der Praxis kommt das beispielsweise bei Webseiten, die mit einer Newsfunktion programmiert sind. An bestimmten Stellen, beispielsweise in unserem Newsarchiv, kann es sein, dass wir Nachrichten aus der Vergangenheit abrufen können. Nun betrachten wir den Fall, dass wir die News von der letzen Woche alle sehen möchten, vorausgesetzt, dass wir eine Datenbank haben, die so organisiert ist. In PHP arbeiten man am besten mit Timestamps, um eine Zeit zu selektieren, jedoch werden wir zwecks Übersichtlichkeit eine solche Datenbanktabelle entwerfen, die uns die einfache und deutliche Filtrierung von Daten erlaubt.

Tabelle News
=======================
ID    Name                                 Tag         Monat        Jahr
1      Präsiden besucht USA          2             5               2012
2      Wetter verschlimmter sich    4             5               2012
3      Autoverkäufe steigen           7             5               2012
4      Webdesign leicht gemacht    9             5               2012

Angenommen wir haben den Montag, 9 Mai 2012. Wir möchten gerne die News aus der letzten Woche sehen und daher bräuchten wir folgende Abfrage:

SELECT * FROM `News` WHERE Tag > 1 AND Tag < 9 AND Monat = 5 AND Jahr 2012

Unser Ergebnis der obigen SQL von bis Abfrage ist folgendes:

1      Präsiden besucht USA         2            5              2012
2      Wetter verschlimmter sich   4            5              2012
3      Autoverkäufe steigen          7            5              2012

Wir müssen nur die WHERE Klausel anpassen, um eine von bis Abfrage zu erhalten. Sie können auch gerne mit kleiner gleich (<=) oder größer gleich (>=) arbeiten, um Ihre Filtrierungen zu programmieren. Wichtig ist hierbei zu betrachten, dass wir aufpassen müssen welche Daten wir manipulieren. Wenn wir nach Spalten filtrieren möchten, die numerische Zeichen enthalten, so sollten wir die Werte so wie in den Abfragen oben selektieren. Wenn wir nach Spalten filtrieren, die Zeichenketten enthalten, so sollten wir unsere Abfrage so abändern:

SELECT * FROM `News` WHERE Tag > '1' AND Tag < '9' AND Monat = 5 AND Jahr 2012

In diesem Fall ist die Spalte Tag keine Nummer-enthaltende Spalte, sondern Zeichenkettenenthaltende. Dies ist für alle SQL Engines gültig.

û