Hi,
wär als SQL Anfrage auch möglich:
SELECT DISTINCT Leser FROM Exemplar
WHERE Bibliothek ='Informatik‘ AND NOT Bibliothek='Mathematik';
?
gruß
Übung 6 Aufgabe 6.2 f)
Re: Übung 6 Aufgabe 6.2 f)
Schönen Abend,
Um es mit der Relationenalgebra zu verdeutlichen: Du selektierst hier erstmal
alle Exemplare mit Bibliothek = 'Informatik' AND NOT Bibliothek='Mathematik',
also schlichtweg alle Exemplare der Informatik-Bibliothek. Erst danach wählst
Du die Leser-Attribute aus dieser "neuen", "fertigen" Liste aus.
AND NOT bezieht sich somit nicht auf die Leser sondern auf die Exemplare
und Du bekommt blos alle Informatik-interessierten Leser
Um es mit der Relationenalgebra zu verdeutlichen: Du selektierst hier erstmal
alle Exemplare mit Bibliothek = 'Informatik' AND NOT Bibliothek='Mathematik',
also schlichtweg alle Exemplare der Informatik-Bibliothek. Erst danach wählst
Du die Leser-Attribute aus dieser "neuen", "fertigen" Liste aus.
AND NOT bezieht sich somit nicht auf die Leser sondern auf die Exemplare
und Du bekommt blos alle Informatik-interessierten Leser

Re: Übung 6 Aufgabe 6.2 f)
Ich hätte es so versucht:
SELECT Leser FROM Exemplar WHERE Bibliothek = "Informatik" AND Leser IS NOT NULL;
Achso das es nicht in der Mathematik-Bib sein soll versteht sich ja von alleine da ich ja nur ein Select auf Bibliothek="Informatik" setze.
geht das nicht? Er sollte doch so erstmal alle Leser-IDs Selectieren, die dem 1. Where Kriterium matchen,
dann entfernt er alle Leser-Attribute, die einen Wert haben. Denkfehler von mir?
Dank und Grüße
SELECT Leser FROM Exemplar WHERE Bibliothek = "Informatik" AND Leser IS NOT NULL;
Achso das es nicht in der Mathematik-Bib sein soll versteht sich ja von alleine da ich ja nur ein Select auf Bibliothek="Informatik" setze.
geht das nicht? Er sollte doch so erstmal alle Leser-IDs Selectieren, die dem 1. Where Kriterium matchen,
dann entfernt er alle Leser-Attribute, die einen Wert haben. Denkfehler von mir?
Dank und Grüße
-
- Sonntagsinformatiker
- Beiträge: 216
- Registriert: 14. Okt 2008 17:56
Re: Übung 6 Aufgabe 6.2 f)
Deine Abfrage bedeutet:Elementer hat geschrieben:SELECT DISTINCT Leser FROM Exemplar
WHERE Bibliothek ='Informatik‘ AND NOT Bibliothek='Mathematik';
Liste mir alle Leser die ein Buch aus der Informatik-Bibiliothek ausgeliehen haben, welche nicht die Mathematik-Bibiliothek ist

Deine Abfrage läuft so Datensatz für Datensatz und prüft jeden. Und da ist es klar, dass du Datensätze findest, die aus der Informatik-Bibiliothek stammen und somit können sie nicht mehr aus der Mathe-Bibi kommen

Gefragt ist aber eben liste Leser, die Bücher aus der Informatik Bibiliothek ausgeliegen haben und keine aus der Mathematik-Bibiliothek, und das ist eben ohne Join oder Subquery nicht realisierbar. Mach dir dazu nochmal genau klar, wie ein SQL-Query abgearbeitet wird.
Mit der relationen Algebra würde deine Anfrage lauten:
Selektion: Attribut Bibliothek ='Informatik‘ und Attribut Bibliothek <> 'Mathematik' => wird optimiert zu: Attribut Bibliothek ='Informatik‘ (da 2. Bedingung bei Wahrheit der 1. automatisch wahr ist)
Projektion: Distinct Leser
Du möchtest also eigentlich 2 Mengen vergleichen

1. Menge: alle Leser von Informatik-Bibi-Büchern
2. Menge: alle Nicht-Leser von Mathe-Bibi-Büchern
also den Schnitt beider Mengen.
Re: Übung 6 Aufgabe 6.2 f)
stimmt meins wenigstens?
Also ich benutze SQL (ok ok My-SQL) schon sehr lange und würde intuitiv das so schreiben. Würde fast schon wetten, dass durch mein Query das richtige Ergebnis rauskommt.

Also ich benutze SQL (ok ok My-SQL) schon sehr lange und würde intuitiv das so schreiben. Würde fast schon wetten, dass durch mein Query das richtige Ergebnis rauskommt.
Re: Übung 6 Aufgabe 6.2 f)
Schönen Abend,
FGB, es geht primär um die Leser, nicht um die Bücher. Wie ice-breaker schon sagte
sucht man also die Schnittmenge {Leser mit Informatik-Buch} ^ {Leser ohne Mathe-Buch}.
FGB, es geht primär um die Leser, nicht um die Bücher. Wie ice-breaker schon sagte
sucht man also die Schnittmenge {Leser mit Informatik-Buch} ^ {Leser ohne Mathe-Buch}.
Re: Übung 6 Aufgabe 6.2 f)
OK, habs verstanden. Also ist nicht das Ergebnis sondern das "wie" gefragt.
Dank dir und gute Nacht
Dank dir und gute Nacht