Guin
Registered User
Moin,
ich komme mir einer Aufgabe nicht ganz klar.
Nach meinem Verstaendnis sollte kein Ergebnis rauskommen. Aber vielleicht verstehe ich das auch komplett falsch und einer von euch sieht da Land.
Mein Ansatz:
ich komme mir einer Aufgabe nicht ganz klar.
Nach meinem Verstaendnis sollte kein Ergebnis rauskommen. Aber vielleicht verstehe ich das auch komplett falsch und einer von euch sieht da Land.
Wie lautet die Abfrage, die alle Bücher auflistet, die von Lehrenden empfohlen wurden, von denen jedoch noch kein Exemplar vorliegt. (Betroffene Tabellen: Buch, Exemplar und empfehlen)
Code:
--
-- Tabellenstruktur für Tabelle `buch`
--
CREATE TABLE IF NOT EXISTS `buch` (
`ISBN` varchar(20) collate utf8_bin NOT NULL,
`Titelblatt` blob,
`Bildgroesse` varchar(20) collate utf8_bin default NULL,
`Bildformat` varchar(10) collate utf8_bin default NULL,
`Titel` varchar(100) collate utf8_bin NOT NULL,
`Text` varchar(1000) collate utf8_bin default NULL,
`Video` blob,
`Videogroesse` varchar(20) collate utf8_bin default NULL,
`Videoformat` varchar(10) collate utf8_bin default NULL,
`Seitenanzahl` decimal(4,0) NOT NULL,
`Exemplare` decimal(3,0) NOT NULL,
`Leihfrist` decimal(5,0) NOT NULL,
PRIMARY KEY (`ISBN`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Daten für Tabelle `buch`
--
INSERT INTO `buch` (`ISBN`, `Titelblatt`, `Bildgroesse`, `Bildformat`, `Titel`, `Text`, `Video`, `Videogroesse`, `Videoformat`, `Seitenanzahl`, `Exemplare`, `Leihfrist`) VALUES
('3802551230', NULL, NULL, NULL, 'Pusteblume', NULL, NULL, NULL, NULL, 22, 2, 15),
('3499225085', NULL, NULL, NULL, 'Der Ekel', NULL, NULL, NULL, NULL, 347, 4, 30),
('3100101065', NULL, NULL, NULL, 'Die Pest', NULL, NULL, NULL, NULL, 362, 3, 30),
('3451280000', NULL, NULL, NULL, 'Die Bibel', NULL, NULL, NULL, NULL, 1863, 5, 60),
('3423101776', NULL, NULL, NULL, 'Solaris', NULL, NULL, NULL, NULL, 236, 5, 30),
('3453186834', NULL, NULL, NULL, 'Der Wüstenplanet', NULL, NULL, NULL, NULL, 1256, 3, 30),
('3423202777', NULL, NULL, NULL, 'Der kleine Hobbit', NULL, NULL, NULL, NULL, 331, 3, 30),
('3453140982', NULL, NULL, NULL, 'Das Vogelmädchen', NULL, NULL, NULL, NULL, 221, 3, 30),
('3897212013', NULL, NULL, NULL, 'Perl 5 kurz und gut', NULL, NULL, NULL, NULL, 70, 3, 30),
('3897212188', NULL, NULL, NULL, 'CGI kurz und gut', NULL, NULL, NULL, NULL, 104, 3, 30);
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `empfehlen`
--
CREATE TABLE IF NOT EXISTS `empfehlen` (
`PersNr` char(7) collate utf8_bin NOT NULL default '',
`ISBN` varchar(20) collate utf8_bin NOT NULL default '',
PRIMARY KEY (`PersNr`,`ISBN`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Daten für Tabelle `empfehlen`
--
INSERT INTO `empfehlen` (`PersNr`, `ISBN`) VALUES
('1234567', '3897212013'),
('1357924', '3897212188'),
('2468013', '3897212188'),
('5234260', '3423101776'),
('5234260', '3897212013'),
('9652425', '3897212188');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `exemplar`
--
CREATE TABLE IF NOT EXISTS `exemplar` (
`ExemplarNr` varchar(2) collate utf8_bin NOT NULL default '',
`Leihart` char(1) collate utf8_bin NOT NULL,
`ISBN` varchar(20) collate utf8_bin NOT NULL default '',
PRIMARY KEY (`ExemplarNr`,`ISBN`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Daten für Tabelle `exemplar`
--
INSERT INTO `exemplar` (`ExemplarNr`, `Leihart`, `ISBN`) VALUES
('1', 'N', '3423101776'),
('1', 'P', '3453186834'),
('1', 'K', '3423202777'),
('1', 'N', '3453140982'),
('2', 'N', '3453186834');
Mein Ansatz:
SELECT x.ISBN, b.Titel, count( x.ISBN ) AS Ausgeliehen, b.Exemplare AS Vorhanden
FROM exemplar x, empfehlen e, buch b
WHERE x.ISBN = e.ISBN
AND b.ISBN = x.ISBN
GROUP BY x.ISBN
HAVING count( x.ISBN ) >= b.Exemplare;
Last edited by a moderator: