Sie sind auf Seite 1von 5

Verbinden von Tabellen (JOIN) Beispiel Seite 1 von 4

Aufgabe 1.1: Spielen Sie die Daten (Seite 4) in eine SQL-Datenbank ein. Aufgabe 1.2: Erstellen Sie ein ER-Modell Aufgabe 1.3: Lesen Sie aufmerksam die nchsten drei Seiten und testen Sie die angegeben SQL -Befehle. Situation: Der Zoobetreiber wnscht eine Ftterungsliste im Internet. So knnen sich die Zoobesucher vorher informieren, wann welche Ftterung stattfindet. Diese Liste soll den Namen aller Tiere, die gefttert werden, enthalten. Zustzlich zu dem Namen der Tiere (Spaltenname: "Tier") soll die Gattung (Spaltenname: "Gattung") und die Uhrzeit der Ftterung (Spaltenname: "Ftterungszeit") ausgegeben werden. Aufgabe 1.4: Wie lautet der Befehl um alle Tupel (Zeilen) der linken Tabelle mit allen Tupeln (Zeilen) der rechten Tabelle zu verknpfen: SELECT * FROM tier INNER JOIN fuetterung; Aufgabe 1.5: Fllen Sie die unten stehende Tabelle aus.

Join der Tabelle: tier mit der Tabelle: fuetterung

tier tid

fuetterung Diese Tabelle zeigt das name Gattung tid fid fuetter_zeit Ergebniss eines "Joins" 1 Knut Seeloewe 1 1 06:00 der Tabelle "kino" mit der Tabelle "auffuehren". 1 Knut Seeloewe 1 2 15:00 1 Knut Seeloewe 2 2 08:00 2 Lassi Hund 1 1 06:00 2 Lassi Hund 1 2 15:00 2 Lassi Hund 2 2 08:00 2 Aufgabe 1.6: Wie lautet der Befehl, der eine Tabelle nur mit den relevanten Tupeln (ganze Zeilen) erzeugt:
SELECT * FROM tier INNER JOIN fuetterung ON tier.tid = fuetterung.tid; Aufgabe 1.7: Fllen Sie die unten stehende Tabelle aus.

fuetterung name Gattung tid fid fuetter_zeit 1 Knut Seeloewe 1 1 06:00 1 Knut Seeloewe 1 2 15:00 2 Lassi Hund 2 2 08:00 Aufgabe 1.8: Welcher Befehl fhrt zu der Ausgabe der unten stehenden Tabelle?
SELECT tier.name AS "tier", tier.gattung AS "gattung", fuetterung.fuetter_zeit AS "fuetter_zeit" FROM tier INNER JOIN fuetterung ON tier.tid = fuetterung.tid;

tier tid

Tier Knut Knut Lassi

Gattung Seeloewe Seeloewe Hund

Ftterungszeit 06:00 15:00 08:00

Verbinden von Tabellen (JOIN) Beispiel Seite 2 von 4


Situation: Der Zoobetreiber wnscht um seine Lagerhaltung zu optimieren, eine Liste aus der ersichtlich wird zu welcher Uhrzeit (Spaltenname: "Ftterungszeit") welches Futter (Spaltenname: "Futterart") zur Verfgung stehen muss.

Join der Tabelle: futter mit der Tabelle: fuetterung

Aufgabe 2.1: Wie lautet der Befehl um alle Tupel (Zeilen) der linken Tabelle mit allen Tupeln (Zeilen) der rechten Tabelle zu verknpfen: SELECT * FROM futter INNER JOIN fuetterung; Aufgabe 2.2: Fllen Sie die unten stehende Tabelle aus.

futter fid 1 2 1 2 1 2

name Fnochen Fleisch Knochen Fleisch Knochen Fleisch

fuetterung lagermenge_kg tid fid 5000 1 2500 1 5000 1 2500 1 5000 2 2500 2

1 1 2 2 2 2

fuetter_zeit 06:00 06:00 15:00 15:00 08:00 08:00

Aufgabe 2.3: Wie lautet der Befehl, der eine Tabelle nur mit den relevanten Tupeln (ganze Zeilen) erzeugt: SELECT * FROM futter INNER JOIN fuetterung ON futter.fid = fuetterung.fid;

Aufgabe 2.4: Fllen Sie die unten stehende Tabelle aus.

futter fid

name 1 Knochen 2 Fleisch 2 Fleisch

fuetterung lagermenge_kg tid fid 5000 1 2500 1 2500 2

fuetter_zeit 1 2 2 6:00 15:00 8:00

Aufgabe 2.5: Welcher Befehl fhrt zu der Ausgabe der unten stehenden Tabelle?
SELECT futter.name AS "Futterart", fuetterung.fuetter_zeit AS "Ftterungszeit" FROM futter INNER JOIN fuetterung ON futter.fid = fuetterung.fid;

Futterart Knochen Fleisch Fleisch

Ftterungszeit 06:00 15:00 08:00

Verbinden von Tabellen (JOIN) Beispiel Seite 3 von 4 - JOIN ber 3 Tabellen - N zu M - Beziehung
Sitation: Der Zoobetreiber wnscht eine Liste aus der ersichlicht ist, wann welches Futter (Spaltenname: "Futterart") an welches Tier (Spaltenname: "Tiername") zur welcher Zeit (Spaltenname: "Ftterungszeit") zu verfttern ist.

Join der Tabelle futter mit der Tabelle fuetterung mit der Tabelle tier futter fid 1 2 1 2 1 2 1 2 1 2 1 2

Aufgabe 3.1: Wie lautet der Befehl um alle Tupel (Zeilen) aller Tabellen miteinander zu verknpfen? SELECT * FROM futter INNER JOIN fuetterung INNER JOIN tier;
Aufgabe 3.2: Fllen Sie die unten stehende Tabelle aus.

name Knochen Fleisch Knochen Fleisch Knochen Fleisch Knochen Fleisch Knochen Fleisch Knochen Fleisch

fuetterung lagermenge_kg tid fid 5000 1 2500 1 5000 1 2500 1 5000 1 2500 1 5000 1 2500 1 5000 2 2500 2 5000 2 2500 22

1 1 1 1 2 2 2 2 2 2 2

tier fuetter_zeit tid 6:00 6:00 6:00 6:00 15:00 15:00 15:00 15:00 8:00 8:00 8:00 8:00

1 1 2 2 1 1 2 2 1 1 2 2

name Knut Knut Lassi Lassi Knut Knut Lassi Lassi Knut Knut Lassi Lassi

Gattung Seeloewe Seeloewe Hund Hund Seeloewe Seeloewe Hund Hund Seeloewe Seeloewe Hund Hund

Aufgabe 3.3: Wie lautet der Befehl, der eine Tabelle nur mit den relevanten Tupeln (ganze Zeilen) erzeugt: SELECT * FROM futter INNER JOIN fuetterung INNER JOIN tier ON futter.fid = fuetterung.fid AND tier.tid = fuetterung.tid;

Aufgabe 3.4: Fllen Sie die unten stehende Tabelle aus. futter fuetterung fid name lagermenge_kg tid fid 1 Knochen 5000 1 2 Fleisch 2500 1 2 Fleisch 2500 2

tier fuetter_zeit tid 1 6:00:00 2 15:00:00 2 8:00:00

name 1 Knut 1 Knut 2 Lassi

Gattung Seeloewe Seeloewe Hund

Futterart Knochen Fleisch Fleisch

Tiername Knut Knut Lassi

Ftterungszeit 06:00 15:00 08:00

Aufgabe 3.5: Welcher Befehl fhrt zu der Ausgabe der links stehenden Tabelle? SELECT futter.name AS "Futterart", tier.name AS "Tiername", fuetterung.fuetter_zeit AS "Ftterungszeit" futter INNER JOIN fuetterung INNER JOIN tier ON futter.fid = fuetterung.fid AND tier.tid = fuetterung.tid;

Verbinden von Tabellen (JOIN) Beispiel Seite 4 von 4 - Daten


;Trennzeichen:` Stringzeichen:" " ` ;Verwendung: Alles markieren und kopieren und mittels der mysql-console ausfhren.

DROP DATABASE IF EXISTS CREATE DATABASE USE `zoo` create table `tier` `tid` `name` `Gattung` PRIMARY KEY

`zoo` ; `zoo` ; ; ( bigint unsigned NOT NULL AUTO_INCREMENT, varchar(50), varchar(50), (`tid`)

); create table `futter` ( `fid` bigint unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50), `lagermenge_kg` int unsigned, PRIMARY KEY (`fid`)

);

create table

`fuetterung` `tid` `fid` `fuetter_zeit` PRIMARY KEY

( bigint unsigned NOT NULL AUTO_INCREMENT, varchar(50), varchar(50), (`tid`,`fid`,`fuetter_zeit`)

);

INSERT INTO `tier` ( ( INSERT INTO `futter` ( (

( "1" "2" ( "1" "2"

`tid` , , `fid` , ,

, "Knut" "Lassi" , "Knochen" "Fleisch"

`name` , , "Seeloewe" , "Hund" `name` , , "5000" , "2500"

`Gattung` ), );

) VALUES

`lagermenge_kg` ) VALUES ), );

INSERT INTO `fuetterung` ( ( (

( "1" "2" "1"

`tid` , , ,

, "1" "2" "2"

`fid` , , ,

, "06:00" "08:00" "15:00"

`fuetter_zeit` ) VALUES ), ), );

Verbinden von Tabellen (JOIN) Beispiel Daten in Tabellenform


Datenbank: tier tid zoo

--futter fid

name 1 Knut 2 Lassi ---

Gattung Seeloewe Hund ---

---

name 1 Knochen 2 Fleisch ---

lagermenge_kg 5000 2500 ---

fuetterung tid fid 1 1 2 -----

fuetter_zeit 1 06:00 2 15:00 2 08:00 ---