MySQL Select Statement

  • Antworten:5
  • OffenNicht stickyNicht beantwortet

16.06.2010 15:52:44 via Website

Hey zusammen,

da die Frage nicht wirklich was mit Android Programmierung zutun hat, poste ich sie mal hier.

Ich zerbreche mir schon seit einigen Stunden den Kopf über eine Select Abfrage.

Ich habe folgende 2 Tabellen gegeben (aufgeklappt):



Und soll ein Query basteln, die mir das Durchschnittsalter der Leser aus der tabelle t_verleih ausgibt, die mehr als nur zwei Bücher ausgeliehen haben.

Das habe ich bisher probiert, jedoch funktoniert es nicht ganz, denn ändere ich die ">2" Bedingung am Ende auf bspw. ">300" ab, bleibt, das Durchschnittsalter gleich, was nicht sein kann, da es keine Leser gibt, die mehr als 300 Ausleihvorgänge haben. Die Bedingung soll eigentlich, die Anzahl der Ausleihvorgänge pro Leser fassen.




Vielelicht hat einer von euch eine Idee? Ich komme irgendwie nicht weiter :-/

— geändert am 16.06.2010 15:55:00

Neu bei Android, AndroidPIT oder dem App Center? Hier erfährst Du alles Wichtige: http://bit.ly/ccFQvI

16.06.2010 18:38:14 via Website

Du machst glaube ich einen Denkfehler bei der Erstellung Deiner Query ..

Ich möchte Dir nicht von Beginn an alle Denkarbeit abnehmen, aber lös mal die Query von hinten auf und betrachte die einzelergebnisse der jeweiligen Subquerys in Relation zur Gesamtanzahl der Datensätze in t_verleih.

Vielleicht kommst Du so drauf....

lg Voss

18.06.2010 08:54:35 via Website

Hey Jörg :)

Danke für die Hilfe. Den Fehler habe ich gefunden, die richtige Anweisung jedoch noch nicht.

Der Fehler steckt in
1select count(leser) from wi4.t_verleih
Er zählt mir die Anzahl der Leser, dann ist ja natürlich klar, warum meine Bedingung keinen Sinn gemacht hat.

Ich hoffe ich krieg es die Tage mal hin.


Herzlichen Dank & Viele Grüße

Anton

Neu bei Android, AndroidPIT oder dem App Center? Hier erfährst Du alles Wichtige: http://bit.ly/ccFQvI

18.06.2010 20:31:53 via Website

Ich präsentiere *trommelwirbel* stolz die Lösung:
1Select avg(abs(months_between(sysdate,gebdat)/12))
2from wi4.t_leser
3where leser_nr in
4(Select leser from wi4.t_verleih group by leser having count(leser)>1)

Herzlichen Dank @ Voss :)

— geändert am 18.06.2010 20:32:18

Neu bei Android, AndroidPIT oder dem App Center? Hier erfährst Du alles Wichtige: http://bit.ly/ccFQvI