0%

Tabellen verknüpfen, statt Daten zu wiederholen · Abschlussprojekt

Abschlussprojekt: Projekt: Ein Bericht für den Verleihtresen

Der Verleihtresen braucht eine Ansicht, die zwei Fragen gleichzeitig beantwortet: Welche Gegenstände gibt es, und wer hat jeden Gegenstand gerade?

Erstelle diese Ansicht selbstständig in report.sql. Gib genau diese fünf Spalten zurück:

ÜberschriftWert
asset_tagDas Kennzeichen des Gegenstands
item_nameDer Name des Gegenstands
borrower_codeDer aktuelle Mitgliedscode oder NULL
borrower_nameDer aktuelle Mitgliedsname oder NULL
checked_out_onDas aktive Ausleihdatum oder NULL

Beginne bei items, weil jeder Gegenstand erscheinen muss. Verknüpfe per Left Join nur aktive Ausleihvorgänge und halte die Prüfung returned_on IS NULL innerhalb der ON-Bedingung dieses Joins. Verknüpfe dann members per Left Join über die Mitglieds-ID des Ausleihvorgangs. Auch der zweite Join muss einen Gegenstand erhalten, wenn der erste keinen aktiven Ausleihvorgang gefunden hat.

Verwende Spaltenaliase für die beiden Ergebnisnamen und sortiere die endgültigen Zeilen nach items.asset_tag. Füge keinen Filter hinzu, der fehlende Treffer entfernt. Verfügbare Gegenstände gehören mit drei NULL-Ausleihfeldern in den Bericht.

Klicke auf Run und untersuche beide Arten von Zeilen:

IT-100 | Cordless drill | MB-017 | Riley | 2026-08-18
IT-200 | Folding table | NULL | NULL | NULL

Der zurückgegebene Verlauf des Klapptischs darf nicht als aktueller Entleiher erscheinen. Die Projektionsleinwand und das Reparaturset haben keinen Verlauf, sollten aber dieselbe leere Entleiherform haben. Der aktive Ausleihvorgang des Projektors sollte Sam zeigen.

Submit prüft IDs und Namen, die du noch nicht gesehen hast, einschließlich doppelter angezeigter Namen und eines Mitglieds mit mehreren aktiven Ausleihvorgängen. Es verlangt eine korrekte Zeile pro Gegenstand und die exakten Überschriften, akzeptiert aber harmlose SQL-Formatierung und gleichwertige Joins mit demselben Verhalten.

Der fertige Bericht zeigt, warum diese kleinen Beziehungszeilen so nützlich sind. Eine Abfrage folgt ihnen, wenn Details gebraucht werden, behält Gegenstände ohne Treffer, wenn die Frage es verlangt, und deutet einen fehlenden aktiven Treffer ohne eine weitere Verfügbarkeitsspalte.

Aufgabe

Erstelle den Bericht für den Verleihtresen in report.sql.

Gib eine Zeile pro Gegenstand mit asset_tag, item_name, borrower_code, borrower_name und checked_out_on zurück, sortiert nach Inventarkennzeichen. Ordne nur einen aktiven Ausleihvorgang zu. Verfügbare Gegenstände müssen mit NULL-Entleiherwerten erhalten bleiben, und zurückgegebener Verlauf darf nicht als aktueller Entleiher erscheinen.