MYSQL
Bierspecke
- datenbank
Hey forum=)
also foldendes problem:
bin in sachen mysql n echter neuling, wurschtel hier nun schon stundenlang an ein paar aufgaben rum. komme langsam voran, aber hier haperts nun:
aufgabe: is das buch mit den meisten stichwörtern ausgeliehen: ja/nein ?
tabellen:
gehoert_zu mit stichwortnr und buchnr
buch mit buchnr und ausleihernr
weitere tabellen auf anfrage!
code:
SELECT "Ja" AS Antwort FROM Buch
WHERE ((SELECT BuchNr, COUNT(StichwortNR) FROM gehoert_zu GROUP BY BuchNr ORDER BY
COUNT(StichwortNR) DESC limit 1) = (SELECT BuchNr FROM Buch WHERE AusleiherNR != 0))
UNION SELECT "Nein" AS Antwort FROM Buch
WHERE ((SELECT BuchNr, COUNT(StichwortNR) FROM gehoert_zu GROUP BY BuchNr ORDER BY
COUNT(StichwortNR) DESC limit 1) =(SELECT BuchNr FROM Buch WHERE AusleiherNR = 0))
zerfleischt mich ruhig =) zumindest hoffe ich es, es wirkt alles etwas unübersichtlich:D
mfg, bs;)
Hallo
aufgabe: is das buch mit den meisten stichwörtern ausgeliehen: ja/nein ?
tabellen:
gehoert_zu mit stichwortnr und buchnr
buch mit buchnr und ausleihernr
weitere tabellen auf anfrage!
Du benötigst eine korrelierte Unterabfrage, die Aggregatsfunktion MAX() und vernünftigerweise den Vergleichsoperator IS NULL. Sollte tatsächlich der Integerwert 0 verwendet werden, um anzuzeigen, dass das Buch keinen Ausleiher hat, dann ein Vergleich mit den üblichen Vergleichsoperatoren. LIMIT kommt in meinen Überlegungen überhaupt nicht vor).
Wenn wirklich "Ja", "Nein" ausgegeben werden soll, käme entweder das if()-Konstrukt oder der case-Operator in Frage.
Viel mehr kann man ohne Beispieldatensätze und genauere Definition der Spalten nicht sagen.
Freundliche Grüße
Vinzenz
Wir haben Beispielabfragen in denen es mit union gemacht wurde, von daher hab ich das so übernommen, zumindest versucht zu übernehmen. Und ja, es soll da nur ein ja oder nein bei herauskommen!
Die Sache mit dem if und case ist mir neu =/
Wenn ich den Code so lasse, sagt mir das programm:
Operand should contain 2 column(s)
was genau bedeutet das?
und die Tabellen:
Buch:
BuchNr Titel Jahr Preis VerlagNr AusleiherNr
200 Programmieren in C 1998 9.99 3505 900101
201 Word 2000 1999 9.99 3505 0
202 St?rmische Ernte 1930 9.00 0 900105
203 Die Dreigroschen Oper 1922 9.99 3502 0
204 Die Weber 1922 9.99 3501 900105
205 Der Herr der Ringe 1942 9.99 3502 0
206 PC Intern 2001 9.99 3505 900110
207 Die Office 2000 Bibel 2002 9.99 3508 0
208 Linux 1970 9.99 3505 0
209 Suse Linux 9.0 2005 9.99 0 0
210 Der Gandolfo-Anschlag 1972 9.90 3502 900105
211 Andromeda 1988 9.99 3501 0
212 Der Binnenmarkt 1965 9.99 0 0
213 Mein Leben 1962 9.99 0 0
214 Fruechte des Zorns 1934 9.99 3501 0
215 Die Caine war ihr... 1955 9.99 0 900110
216 Micky Mouse 1970 5.90 0 900106
217 Donald Duck 1971 5.90 0 0
218 Toepfern ohne Ton 2003 9.99 0 0
219 Power Point 97 1998 9.99 3508 900114
220 Farm der Tiere 1953 9.99 0 900114
und stichworte:
StichwortNr BuchNr
3500 200
3500 206
3550 200
3550 206
3551 200
3552 200
3552 206
3552 208
3553 203
3553 210
3553 211
3554 204
3555 218
3562 202
3562 205
3562 210
3562 211
3562 214
3562 215
3564 202
Hallo
Wir haben Beispielabfragen in denen es mit union gemacht wurde, von daher hab ich das so übernommen, zumindest versucht zu übernehmen. Und ja, es soll da nur ein ja oder nein bei herauskommen!
ja klar, statt if kann man natürlich ein UNION-Konstrukt bauen, das einmal eben einen Datensatz zurückliefert, wenn das Buch (die Bücher) ausgeliehen ist bzw. einen, wenn das Buch nicht ausgeliehen ist. Sonderlich sinnvoll finde ich das nicht :-)
Dein Statement ist übrigens abenteuerlich und viel zu kompliziert :-)
Buch:
BuchNr Titel Jahr Preis VerlagNr AusleiherNr
200 Programmieren in C 1998 9.99 3505 900101
201 Word 2000 1999 9.99 3505 0
tatsächlich mit 0 statt mit NULL. Verbesserungswürdiges Tabellendesign.
Freundliche Grüße
Vinzenz
naja, wie gesagt, bin absolut neu auf dem gebiet:D ich wurschtel mir da irgendwas zusammen!
das mit der tabelle, naja, inna vorschau hab ich alles noch grade gerückt und dann nachm abschicken war alles durcheinander!
könntest du mir evtl. mal son code mit dem if basteln, wie so etwas aussieht?