Präzise Fragen stellen · Übung
Eine Kategorie mit WHERE filtern
Die Suche mit vier Spalten ist informativ, antwortet aber weiterhin mit dem gesamten Katalog. Angenommen, Riley braucht ein Werkzeug für eine Reparaturaktion. Veranstaltungsausrüstung und Elektronik würden die Antwort nur unübersichtlicher machen.
Öffne search.sql und füge zwischen FROM items und dem Semikolon eine Zeile ein:
SELECT asset_tag, name, category, loan_days
FROM items
WHERE category = 'tools';
Klicke auf Run. SQLite sollte dieselben vier Überschriften beibehalten, aber nur die beiden Werkzeugzeilen zurückgeben:
Columns: asset_tag | name | category | loan_days
TL-220 | Step ladder | tools | 3
TL-100 | Cordless drill | tools | 7
SELECT entscheidet weiterhin, welche Spalten erscheinen. Die neue WHERE-Klausel trifft eine andere Entscheidung: Welche Quellzeilen dürfen ins Ergebnis? Lies category = 'tools' als Vergleich. SQLite vergleicht für jede Gegenstandszeile die gespeicherte Kategorie mit dem Text tools und behält die Zeile, wenn beide gleich sind.
Die Anführungszeichen sind wichtig, weil tools ein Textwert ist. Der Spaltenname category steht hier nicht in Anführungszeichen. Er sagt SQLite, wo es nachsehen soll; 'tools' ist der gesuchte Wert.
Du kannst die Entscheidung an einer sichtbaren Zeile prüfen. Bei der Stehleiter enthält category den Wert tools, also ist der Vergleich wahr und SQLite behält die Zeile. Beim Projektor enthält sie electronics, also ist der Vergleich falsch und diese Zeile bleibt draußen.
Beachte, dass die Abfrage nicht „alles außer Veranstaltungsausrüstung“ sagt. Ein Katalog kann Kategorien enthalten, die du noch nicht gesehen hast. Diese sollen nicht in eine reine Werkzeugantwort geraten. Die gewünschte Kategorie zu benennen macht die Frage präzise.
Die Reihenfolge der beiden passenden Zeilen stammt weiterhin aus diesem konkreten Durchlauf, nicht aus einer Regel in deinem SQL. Bald machen wir die Reihenfolge zum Teil der Frage. Für diese Übung zählen beide Werkzeugzeilen, unabhängig davon, welche SQLite zuerst zurückgibt.
Submit stellt dieselbe Frage mit anderen Gegenstandsnamen, Kategorien und Leihdauern. Wenn ein anderer Gegenstand als ein Werkzeug erscheint, prüfe den Vergleich hinter WHERE. Wenn ein Werkzeug fehlt, stelle sicher, dass der Filter category mit genau 'tools' vergleicht und das ursprüngliche SELECT mit vier Spalten intakt geblieben ist.
Deine Abfrage trifft jetzt zwei sauber getrennte Entscheidungen: vier nützliche Angaben für jede Antwort und nur die Zeilen, die zur gewünschten Kategorie gehören.
Aufgabe
Füge search.sql eine WHERE-Klausel hinzu, sodass das Ergebnis mit vier Spalten nur Gegenstände enthält, deren category gleich 'tools' ist.
Führe die Abfrage aus, bestätige, dass jede zurückgegebene Zeile ein Werkzeug ist, und reiche sie ein.