MySQL Select Statement

  • Antworten:5
Anton S.
  • Forum-Beiträge: 1.614

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 102

16.06.2010, 15:56:59 via Website

Ich würde mal für die Tabelle t_verleih einen Alias verwenden, da du im Sub-Select diese Tabelle 2x verwendest. Da kann es sein, dass er sich nicht ganz auskennt.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

17.06.2010, 23:43:53 via Website

Hast Du den Fehler denn nun gefunden ?

lg Voss

Antworten
Anton S.
  • Forum-Beiträge: 1.614

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

Antworten
Anton S.
  • Forum-Beiträge: 1.614

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

Antworten