Übung 1: SQL in ACCESS In ACCESS ist zunächst ein neue

Werbung
Übung 1: SQL in ACCESS Udo Matthias Munz
Übung 1: SQL in ACCESS
In ACCESS ist zunächst ein neue Abfrage
einzurichten:
Wählen Sie „Entwurfsansicht“ und klicken
sie dann auf die zu verwendende Tabelle:
Wählen Sie die gewünschte Tabelle aus
und rufen Sie dann im Menü Abfrage
den Punkt SQL-spezifisch – Union auf:
Im Abfragefenster formulieren Sie den SQL-Abfrage Term. Lassen Sie die Abfrage
ausführen.
Um die Abfrage
abzuändern
klicken Sie mit
der rechten
Maustaste im
Abfragefenster
und wählen Sie
SQL. Es
erscheint wieder
das
Editierfenster in
welchem Sie den
Abfrageterm
verändern
können.
1
z:\_skripte\datenbanken\adam übungen ct12\übungen.doc
2
Tabellenzugriff
Tabellenzugriff
Daten auswählen: Verwendung von SELECT
Wenn im Feldbezeichner Leerstellen vorkommen oder der Bezeichner ein
reserviertes Wort darstellt, ist er in Hochkomma zu schreiben und die Tabelle zu
benennen:
SELECT BIOLIFE.DB.'Species Name' FROM BIOLIFE.DB
oder
SELECT Datenbank.'Species Name' FROM BIOLIFE.DB AS Datenbank
SELECT NAME, a.'SIZE', WEIGHT, AREA, BMP FROM ANIMALS.DBF AS a
Daten eintragen: Verwendung von INSERT
Mit der folgenden Anweisung wird ein vollständiger Datensatz eingefügt. Beachten
Sie, dass die Anzahl, Reihenfolge und Typ der Feldbezeichner in der Feld-Liste
(<column_list>) genau mit den Werten in der Werte-Liste (<value_list>)
übereinstimmen müssen. Sie müssen aber nicht sämtliche Felder angeben. Nicht
extra angegebene Feldwerte werden entweder mit den Null-Werten oder den
Vorgabewerten aufgefüllt. Manche Feldwerte können Sie gar nicht angeben; bei
dieser Tabelle ist es das Feld ‚ID‘, welches als Schlüsselfeld definiert wurde und
automatisch inkrementiert wird.
INSERT INTO stamm (Name, Vorname, Geburtsdatum, Geburtsort,
Strasse_HausNr, PLZ, Ort, Klasse)
VALUES ("Unfug", "Purer", "11.11.11", "Blödelhausen",
"Jodelgasse 11", "77777", "Stupeldorf", "TG11/1")
Erproben Sie auch die SQL-Anweisungen DELETE und UPDATE.
Die Struktur einer Tabelle ändern: ALTER TABLE
Weitere Auswertungen einer Tabelle
Mengen- bzw. Aggregationsfunktionen
Die folgenden Mengen- oder auch „Aggregations-"Funktionen in der ANSI-StandardSQL stehen der lokalen SQL für den Abruf von Daten zur Verfügung:
• SUM(), um alle numerischen Werte in einer Spalte zu summieren
• AVG(), um den Durchschnitt aller von NULL verschiedenen numerischen Werte in
einer Spalte zu berechnen
• MIN() für die Bestimmung des kleinsten Wertes in einer Spalte
• MAX() für die Bestimmung des größten Wertes in einer Spalte
• COUNT(), um in einer Spalte die Anzahl der Werte zu zählen, die bestimmte
Kriterien erfüllen
String-Funktionen
Die lokale SQL unterstützt folgende Stringmanipulationen zum Abrufen, Einfügen
und Aktualisieren in der ANSI-Standard-SQL:
• UPPER() für die Umwandlung eines Strings in Großbuchstaben
• LOWER() für die Umwandlung eines Strings in Kleinbuchstaben
• SUBSTRING() für die Rückgabe eines bestimmten Teils eines Strings
• TRIM() für die Entfernung von Wiederholungen eines bestimmten Zeichens von
rechts, links oder von beiden Seiten her
3
Tabellenzugriff
Datumfunktionen
Die lokale SQL unterstützt die Funktion EXTRACT() für die Isolierung eines
einzelnen numerischen Feldes aus einem Datum/Zeit-Feld unter Verwendung
folgender Syntax:
EXTRACT (extract_field FROM field_name)
Die folgende Anweisung zum Beispiel extrahiert YEAR aus einem DATE-Feld:
SELECT EXTRACT(YEAR FROM HIRE_DATE) FROM EMPLOYEE
Mit dieser Funktion lassen sich auch MONTH, DAY, HOUR, MINUTE und SECOND
extrahieren.
Achtung! Bei Abfragen für ein Datum müssen Sie das Datum in Gatter-Zeichen #
einschließen:
SELECT x FROM Stamm WHERE Geburtsdatum < #31/12/79#
Operatoren
Die lokale SQL unterstützt folgende Operatoren:
Typ
Operatoren
arithmetische Operatoren
Vergleichsoperatoren
logische Operatoren
String- Verkettungsoperator
+, -, *, /
<, >, =, <>, <=, >=, IS NULL
AND, OR, NOT
|| , +
Beispiele:
Select max(note01) from stamm
liefert schlechteste Note
Select min(note01) from stamm
liefert beste Note
select avg(note02) from stamm
liefert Durchschnittsnote
Verwenden von Unterabfragen
Zur Auswahl von Datensätzen aus einer Auswahl kann man die SELECTAnweisungen „schachteln“.
liefert Namen und Noten derjenigen, die
select name, note02 from stamm
where note02 >=
schlechter als der Durchschnitt sind
(select avg(note02) from stamm)
select * from stamm
where note01 =
(select min(note01) from stamm)
liefert Name und beste Note
4
Übung 2
Übung 2
1. Erstellen einer leeren Datenbank
Das Datenbankfenster enthält noch keine
Objekte (Tabellen, Formulare, Abfragen,
etc.).
2. Eine Tabelle erstellen
Wählen Sie im Datenbankfenster das
Objekt Tabellen und Erstellt eine Tabelle in
Entwurfsansicht aus.
Vergeben Sie die folgenden Feldnamen und
den dazugehörigen Datentyp.
Durch rechten Mausklick auf das Feld
Adresslistenkennung können Sie dem Feld
den Primärschlüssel zuordnen.
3. Daten erfassen und bearbeiten
Sie können die Datenblattansicht öffnen durch Doppelklick auf Adresskartei im
Objekt Tabellen im Datenbankfenster.
Geben Sie folgende Datensätze ein.
Bei großen Datenblättern kann die Eingabe übersichtlicher gestaltet werden, falls nur
ein Datensatz angezeigt wird:
Datensätze / Daten Eingeben
4. Datenblattfenster Sortieren und Filtern
Zum Sortieren markieren Sie das Feld welches sortiert werden soll.
Geben Sie folgende Anweisung:
Datensätze/Sortieren/ Aufsteigend
Um das Datenblatt nach Nach- und Vornamen zu sortieren, müssen Sie beide
Spalten markieren. Access wendet das Sortierkriterium dann erst auf die linke Spalte
5
Übung 2
an, falls zwei Felder identisch sind, wird das Sortierkriterium nochmals auf die
identischen Felder in der nächsten Spalte angewendet.
Wenn sie alle Datensätze mit Nachname Müller aus dem Datenblatt herausfiltern
möchten, gehen Sie wie folgt vor. Setzen sie den Cursor in das Feld Müller und
wählen Sie die Anweisung
Datensätze/Filter/Auswahlbasierteren Filter
Um den Filter aufzuheben wählen Sie
Datensätze/Filter/Sortierung entfernen
5. Layout von Datenblättern
Unter dem Menü Format können Sie die Eigenschaften des Datenblattes einstellen.
Die Formatierung wirkt sich auf die markierten Felder aus.
Falls Sie Spalten vertauschen möchten, können Sie die betreffende Spalte markieren
und dann bei gedrückter linker Maustaste an die gewünschte Position im Datenblatt
verschieben.
6. Felddefinition und Eigenschaften
Wechseln sie in die Entwurfsansicht
Ansicht/Entwurfsansicht
Es wird Ihnen eine grobe Auswahl von
Felddatentypen angeboten.
Im Register Allgemein/Feldgröße können Sie
weitere Differenzierungen treffen. Beachten Sie
bitte, möglichst wenig Platz beanspruchende
Datentypen zu verwenden. Um Murphy zu
zitieren: „Datenbanken werden immer größer als angenommen. Wird eine Datenbank
nicht größer, dann nur, weil die Platte bereits voll ist.“.
Die weiteren möglichen Einstellungen im Register Allgemein sind abhängig vom
gewählten Felddatentyp.
Der Gültigkeitsbereich der Felddatentypen und die weitern Formatierungsoptionen im
Register Allgemein sind in der Accesshilfe erläutert.
Übungen:
1. Formatieren Sie die Felder Ihrer Tabelle sinnvoll (s. Murphy).
2. Erstellen Sie Formulare und Abfragen zu Ihrer Tabelle ohne Zuhilfenahme des
Assistenten.
3. Erstellen Sie die Tabellen für ein CD-Verleihsystem.
6
Übung 3
Übung 3
Ziel dieser Übung ist es das Verknüpfungen von Tabellen über Relationen zu üben.
Aus Reduktionsgründen entsprechen diese Tabellen zunächst nicht der
Normalform.
1:n Relation (Beziehung)
Kunde (KuNr, Nachname, Vorname,
Straße, PLZ, Ort)
Auftrag(AuNr, KuNr, ArtNr,
Bezeichnung, Stück)
Ein Kunde kann mehrere Aufträge
erteilen, jedoch ein Auftrag ist genau
einem Kunden zugeordnet: 1:nRelation.
1. Entwurf der Kundentabelle
Achten Sie darauf das Feld
Nachname zu indizieren, damit eine
Indexdatei erstellt wird (schnelles
Suchen).
2. Entwurf der Auftragstabelle
Achten Sie besonders auf die
Formatierung des Feldes KuNr.
3. Relation in Access erstellen
Wählen Sie das Menü Extras/Beziehungen
Fügen Sie die Tabellen Kunde und Auftrag in das
Beziehungen-Fenster ein.
Bevor Sie nun die Beziehung definieren, müssen
Sie darauf achten, dass die Tabellen geschlossen
sind. Sonst Kuddelmuttel.
Klicken Sie mit der Maus das Primärschlüsselfeld
„KuNr“ der Tabelle „Kunde“ an und ziehen es bei gedrückter Maustaste zum
gleichnamigen Feld der Tabelle „Auftrag“. Es erscheint folgendes Dialogfeld:
Nebentatelle
(Detailtabelle)
Haupttabelle
7
Übung 3
4. Kontrollkästchen referentieller Integrität
Hilft inkonsistente Datensätze zu vermeiden. Z.B. die Eingabe einer nicht
vorhandenen Kundennummer in die Tabelle „Auftrag“ wird unterbunden. Des
weiteren wird verhindert, dass z.B. ein Kundendatensatz in der Tabelle „Kunde“
gelöscht werden kann, solange noch ein Auftrag von ihm vorhanden ist.
Im Todesfall eines Kunden führt dies allerdings zu Problemen. Der Auftrag kann nicht
mehr ausgeführt werden und bei aktivierter referentieller Integrität könnte der Kunde
nicht gelöscht werden. Durch Aktivierung des Kontrollkästchens „Löschweitergabe an
verwandte Datensätze“ kann dieses Problem behoben werden. Wird nun der
Datensatz des Kunden gelöscht werden automatisch alle Detaildatensätze
mitgelöscht.
Bei aktivierter referentieller Integrität weigert sich Access auch Änderungen in
Beziehungsfeldern durchzuführen, um verwaiste Datensätze zu verhindern. Wollen
Sie dennoch Beziehungsfelder ändern, so Aktivieren Sie das Kontrollkästchen
„Aktualisierungsweitergabe an Detailfeld“. Die Änderung ist dann möglich und wird
automatisch an alle Detailtabellen weitergereicht.
5. Verknüpfungstyp
Bei Mausklick auf die Schaltfläche
„Verknüpfungstyp“ im Dialogfenster
„Beziehungen bearbeiten“ erscheint
folgende Auswahlmöglichkeit:
Die von Ihnen gewählte
Verknüpfungseigenschaft hat
keinen Einfluss auf die Relation der
Tabellen. Für Abfragen (wird später
besprochen) ist es allerdings
wichtig welche Datensätze die
Verknüpfungstabelle beinhaltet.
Übungsaufgaben:
Zur Vermeidung eines inkonsistenten Datenbestandes, bitte ich sie die folgenden
Übungen eigenverantwortlich durchzuführen.
1. Geben Sie Daten in die Tabellen ein und überprüfen Sie die Auswirkungen der
unterschiedliche Einstellungen unter referentieller Integrität.
2. Programmieren Sie die im Unterricht normalisierte Datenbank.
8
Übung 4
Übung 4
Leseratte: Überlegungen beim Entwurf eines Datenmodells
Ergebnis der folgenden Überlegungen soll eine Verwaltung für eine private
Büchersammlung sein. Bei Büchern ist es sicher sinnvoll, Daten wie Autor, Titel,
Untertitel, Verlag und Sprache zu erfassen und vielleicht noch Felder für Kaufdatum,
Erscheinungsjahr und Bemerkungen vorzusehen. Enthält die Sammlung vorwiegend
Sachbücher. hilft eine Klassifizierung nach Sachgebieten, Belletristik könnte man
nach Genre sortieren. Wer es bunt mag, spendiert noch ein Feld, das einen Scan
des Einbands aufnimmt. Bei verliehenen Büchern sind der Entleiher, Verleih- und
versprochenes Rück,gabedatum zu erfassen.
Bei der Festlegung, wie die Tabellen der zu erstellenden Datenbank aufgebaut sein
sollen, ist es oft hilfreich, einfach erst einmal die Hauptwörter aus einer solchen
groben Beschreibung herauszuschreiben, zu gruppieren und sich zu überlegen. in
welcher Beziehung sie stehen. Zwei Tabellen kristallisieren sich sofort heraus: 'Buch'
und 'Entleiher'. Bei der Entscheidung, welche Attribute als Felder beispielsweise der
Tabelle 'Buch' zu realisieren sind und für welche eine verknüpfte Tabelle zu
spendieren ist, helfen Fragen wie: 'Hat dieses Attribut jedes Buch, die meisten oder
nur wenige?', 'Kann es mehrfach bei einem Buch vorhanden sein?' und 'Ist es
atomar, also durch eine Zahl, einen kurzen Text oder Ähnliches darstellbar, oder
besteht es aus weiteren Unterattributen?' Jedes Buch hat einen Titel und eine
Sprache, ist in einem bestimmten Jahr in einem Verlag erschienen und zu einem
Zeitpunkt gekauft worden. Einige Bücher haben einen Untertitel, für einige liegt ein
Umschlag-Scan vor, und zu einigen fällt mir sofort eine Bemerkung ein. Bücher
haben einen oder mehrere Autoren und gehören zu einer oder mehreren Kategorien.
Ein Verlag ist gekennzeichnet durch Name, Land und Ort, ein Autor durch Vor- und
Nachname. Letzteres gilt auch für einen Entleiher, der außerdem eine
Telefonnummer und eine E-Mail-Adresse hat. Eine Person kann sich zu unterschiedlichen Zeitpunkten mehrere Bücher leihen und für jedes ein anderes Rückgabedatum
vereinbaren; ein Buch kann nur an eine Person verliehen sein.
9
Leseratte: Überlegungen beim Entwurf eines Datenmodells
ER-Diagramm
Die geschilderten
Zusammenhänge kann man
grafisch wie in der Abbildung
auf dieser Seite darstellen.
Die Rechtecke kennzeichnen
dabei Objekte aus der realen
Welt, die abgerundeten
Kästen ihre Attribute. Rauten
stehen für Beziehungen zwischen Objekten; an den
Enden ihrer
Verbindungslinien steht ihre
sogenannte Kardinalität. die
1:n-, m:n- und 1:1-Beziehungen auseinander hält.
Tabellen erstellen
Aus einer solchen Grafik
lässt sich unmittelbar die
Tabellenstruktur der
Datenbank ableiten: Rechtecke werden zu Tabellen, die
dazugehörigen Attribute zu
deren Feldern. Die Tabelle
am Ende jeder 1:n-Beziehung
bekommt ein weiteres Feld mit einem entsprechenden Fremdschlüssel. Zusätzliche
Tabellen sind für m:n-Beziehungen vorzusehen, neben eventuellen Attributen
besitzen sie ein Feld für jede an der Relation beteiligte Tabelle.
Relationen mit Attributen
Einen Sonderfall stellt in diesem Beispiel die 1:n-Relation 'hat geliehen’ dar, die
man eigentlich ohne zusätzliche Tabelle realisieren könnte. Aber wo bringt man
Entleih- und geplantes Rückgabedatum unter? Speichert man sie in der Buch-Tabelle, verschwendet man Speicherplatz. denn die müsste diese Felder für jedes Buch
bereithalten, obwohl in der Regel nur wenige Bücher verliehen sind. Schlägt man sie
andererseits der Entleiher-Tabelle zu, müsste man Name, Telefonnummer und
E-Mail-Adresse des Empfängers jedes Mal neu ausfüllen, auch wenn sich ein und
dieselbe Person mehrere Bücher leiht; außerdem gehen diese Informationen
verloren, wenn man den entsprechenden Eintrag löscht, weil jemand ein Buch
zurückgibt. Die beste Lösung ist hier wohl, eine Extra-Tabelle 'Leihe' zu spendieren,
die die Felder 'Buch' und 'Entleiher’ als Fremdschlüssel sowie die beiden
Datumsfelder enthält.
Datentypen
Die Datentypen der einzelnen Tabellenfelder ergeben sich meist intuitiv. Zu
beachten ist, dass Frerndschlüsselfelder denselben Typ besitzen müssen wie das
Primärschlüsselfeld, auf das sie verweisen. Ansonsten sollte man Zahlentypen nur
dann verwenden, wenn man die Werte für Berechnungen verwenden oder
Datensätze numerisch sortieren will - für deutsche Postleitzahlen ist beispielsweise
ein fünf Zeichen fassendes Textfeld angebrachter, denn sonst erscheint Leipzig
(04105) nur vierstellig. Bei der Dimensionierung von Textfeldem sollte man nicht zu
10
Leseratte: Überlegungen beim Entwurf eines Datenmodells
sparsam sein, denn bei den meisten modernen Datenbankprogrammen belegen
Datensätze auf der Festplatte nur die Anzahl von Zeichen, die tatsächlich benutzt
sind. Lediglich ältere Datenbankformate wie dBase arbeiten mit festen Feldlängen
und verbraten für ein Textfeld, das 100 Zeichen fassen darf, in jedem Datensatz 100
Bytes, auch wenn dort nur 'Der Herr der Ringe' steht.
Auf dem Index: die Schlüsselfelder
Für die Primärschlüssel der Tabellen kommen in diesem Beispiel eigentlich nur
automatisch hochgezählte laufende Nummern in Frage, es gibt bei keinem der
Objekte Attribute, die es eindeutig kennzeichnen. Man könnte auf die Idee kommen,
zu jedem Buch seine ISBN zu speichern und als Primärschlüssel zu verwenden, das
kann aber zu Problemen führen, wenn man mehrere Bände eines Werkes getrennt
verwalten will oder wenn etwa ein Versandhauskatalog seinen Platz in der Bibliothek
finden soll.
Für Sekundärindizes sind selbstverständlich erst einmal alle Fremdschlüsselfelder
vorzusehen, damit man beispielsweise schnell von einem Verlag zu den Büchern
gelangt, die er herausgegeben hat. Welche weiteren Felder man indiziert, ist
weitgehend Geschmackssache und hängt davon ab, wonach man häufig suchen und
sortieren will. Folgendes ist dabei allerdings zu beachten: Man wird die Datenbank
wohl selten benutzen, um beispielsweise herauszufinden, wie ein Autor namens
Brecht mit Vornamen heißt, also für eine Suche nur in der Autoren-Tabelle.
Allerdings ist eine Anfrage wie 'alle Bücher eines Autors, der mit Nachnamen Brecht
heißt' durchaus sinnvoll. Daher sollte die Datenbank einen Sekundärindex über die
Nachnamen der Autoren enthalten. Dasselbe gilt für die Namen von Verlagen und
Entleihern.
Datenbankanwendung fertigstellen
Mit dem Entwurf des Datenmodells und dem Anlegen der Tabellen ist ein Großteil
der Handarbeit auf dem Weg zu einer Datenbankanwendung erledigt. Was fehlt, sind
Eingabeund Suchmasken, mit denen man den Datenbestand bequem pflegen und
durchforschen kann, sowie Formulardefinitionen zum Drucken von Berichten. Die
meisten modernen Datenbankprogramme bieten dafür aber recht brauchbare
Vorlagen oder Assistenten an, die zumindest ein funktionierendes Grundgerüst
erstellen.
Der Rest ist Kosmetik. So kann man sich die Dateneingabe dadurch erleichtern,
dass die Datenbank beim Anlegen eines neues Datensatzes bestimmte Felder mit
sinnvollen Vorgaben belegt, etwa 'Heute' als Kaufdatum und 'Deutsch' als Sprache
beim Eintragen eines neuen Buches. Wer zusätzlich Lust verspürt, sich in die Skriptoder Programmiersprache eines Datenbanksystems einzuarbeiten, eröffnet sich die
Möglichkeit, weitere Funktionen um die eigentliche Datenbank herum zu programmieren, etwa das automatische Versenden von ErinnerungsMails an säumige
Entleiher.
(nach c’t Heft 18/2001)
11
Übung 5
Übung 5
1:n-Beziehung
Eine 1:n-Relation haben wir bereits erstellt.
n:m-Beziehung
Problem:
Eine n:m-Relation kann in Access nicht direkt
abgebildet werden.
Beispiel:
1 Lieferant liefert CD-Rohlinge und
1 Lieferant liefert mehrere Artikel
1:m
Disketten.
Mehrere Lieferanten liefern Disketten
Mehrere Lieferanten liefern 1
n:1
Artikel.
Daraus folgt:
Mehrere Lieferanten liefern CD-Rohlinge
Mehrere Lieferanten liefern
n:m
und Disketten
mehrere Artikel:
Lösung:
Auflösung der n:m-Beziehung mittels einer dritten Tabelle in zwei 1:n-Beziehungen.
Beispiel:
Lieferant(Lief-Nr, Nachname, Vorname, Straße, PLZ, Ort)
Lief-Art(Lief-Nr, Art-Nr)
Artikel(Art-Nr, Bezeichnung, Preis)
Aus der Tabelle Lief-Art geht eindeutig hervor, welcher Artikel ein Lieferant liefert,
bzw. von welchem Lieferanten ein Artikel bezogen wird.
Lieferant
1
n
Lief-Art
n
1
Artikel
Hinweis:
In der Tabelle Lief-Art sind zwei
Primärschlüssel definiert.
Sie können dies in Access realisieren,
in dem Sie beide Zeilen markieren und
anschließend auf das Schlüsselsymbol
klicken.
Übungsaufgabe:
Erstellen Sie die Tabellen Lieferant, Lief-Art, Artikel und die zugehörigen
Beziehungen.
Lief-Nr und Art-Nr sind Primärschlüsselfelder vom Typ AutoWert.
Das Feld Preis ist vom Typ Währung.
PLZ vom Typ Zahl (Feldgröße Long Integer).
Alle anderen Felder sind Textfelder (Standardlänge 50 Zeichen).
Geben Sie folgende Testdatensätze ein:
12
Übung 6
Übung 6
Eine Transportkompanie der Schweizer Armee benötigt zur Abwicklung der
Transportzentrale eine Datenbank. Früher wurde die Abwicklung in MS Excel
gemacht.
ER-Diagramm
Ein Unteroffizier verwaltet die Standalone Datenbank. Die Fahraufträge kommen per
Fax oder telefonisch. Angegeben wird bei der Bestellung die Route das Transportgut
und die am Auftragsort zuständige Person.
Der Unteroffizier wählt anhand des Transportguts und der Strecke das passende
Fahrzeug aus. Er wählt einen Motorfahrer, der dieses Fahrzeug führen kann. Der
Unteroffizier nimmt die Datenbank zu Hilfe.
In der Datenbank sind alle Fahrer erfasst. Unterschieden werden sie anhand der
eindeutigen Matrikel – Nummer. Des weiteren hat ein Fahrer noch einen
Dienstgrad, Namen und Vornamen. Er hat die Fahrerlaubnis einer bestimmten
Kategorie.
In einer Tabelle Kategorie sind der Kategoriename und die Bezeichnung der
dazugehörigen erlaubten Fahrzeuge gespeichert. Von einer Kategorie können
mehrere Fahrer die Erlaubnis haben.
13
Übung 6
Die Fahrzeuge müssen auch erfasst werden. Jedes Fahrzeug hat eine eindeutige
Nummer (Verkehrsschild) und eine Bezeichnung.
Ein bestimmtes Fahrzeug gehört zu einem Typ. Ein Typ kann mehrere Fahrzeuge
beinhalten. Der Typ beinhaltet die Bezeichnung, Höhe, Breite, das Leergewicht in
Kilo, das Höchstgewicht in
tbTransportgut
tbeinsetzen
tbKategorie
tbfährt
tbFahrzeug
tbFahrauftrag
tbFahrer
tbFahrzeugtyp
14
Übung 6
Abfrage Nr. 1
Ausgabe von Fahrzeugnummer, -bezeichnung und Anzahl Einsätze (für dieses
Transportgut) von den Fahrzeugen, die während der Dauer des Kurses Brot (Artikel
2) transportiert haben.
SQL
SELECT Count(einsetzen.Nummer) AS [Anzahl Einsätze], Fahrzeug.Nummer,
Fahrzeug.Bezeichnung
FROM Fahrzeug INNER JOIN (Fahrauftrag INNER JOIN einsetzen
ON Fahrauftrag.Nummer = einsetzen.AuftrNr) ON Fahrzeug.Nummer =
einsetzen.Nummer
GROUP BY einsetzen.Nummer, Fahrzeug.Nummer, Fahrzeug.Bezeichnung,
Fahrauftrag.Artikel
HAVING Fahrauftrag.Artikel = 2;
Ausgabe
Abfrage 2
Ausgabe der Bezeichnung aller Fahrzeuge mit den Kategorien, in denen sie sind und
den dazugehörigen Nutzlasten.
SQL
SELECT Fahrzeugtyp.Bezeichnung, Kategorie.Bezeichnung,
Fahrzeugtyp.[Höchstgewicht (kg)] Fahrzeugtyp.[Leergewicht (kg)] AS
Nutzlast
FROM Fahrzeugtyp INNER JOIN Kategorie ON Fahrzeugtyp.Kategorie =
Kategorie.Name;
15
Übung 6
Ausgabe
Abfrage 3
Ausgabe von Fahrzeugnummer und –bezeichnung der Fahrzeuge, die im
Fahrauftrag 2 eingesetzt werden.
SQL
SELECT * FROM Fahrzeug
WHERE Nummer IN (SELECT Nummer FROM einsetzen WHERE AuftrNr=2);
Ausgabe
(Eine Aufgabe der Zürcher Hochschule Winterthur
http://www2.active.ch/~gusti/projekte/transport/transport.htm)
16
Herunterladen