PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] SQL-Abfrage



cg710
03.12.2014, 19:16
Hallo zusammen,

ich habe eine Frage zu meiner SQL-Abfrage.
Diese ist eher allgemein und nicht VMS-spezifisch.
Ich hoffe, dass ich sie trotzdem posten darf und mir das keiner übel nimmt...

Also, ich habe eine Tabelle "Schnitt" angelegt.
Hier werden alle Einzelergebnisse gespeichert mit folgenden Spalten:
hdj, kegler, heimaus, aushilfe, volle, abraumen, fehler.

Mit folgender Abfrage wird der Gesamt-Schnitt aller "kegler" ausgegeben und absteigend sortiert:

SELECT kegler, AVG(volle) as volle, AVG(abraumen) as abraumen, AVG(fehler) as fehler, count(*) as anzahl FROM Schnitt WHERE hdj = 'Herren' GROUP BY kegler ORDER BY volle+abraumen DESC

Zur Erklärung noch:
In der Spalte "hdj" wird nur ein String gespeichert: Herren, Damen oder Jugend.
In der Spalte "kegler" eben der Name des Keglers.
In der Spalte "heimaus", ob es ein Heim- oder Auswärtsspiel war.
In der Spalte "aushilfe" wird nur "ja" oder "nein" gespeichert.

Ich möchte jetzt zusätzlich noch abfragen, wie oft ein Kegler/Spieler schon ausgeholfen hat.
Geht das irgendwie in der gleichen Abfrage oben?
Denn ich speichere die Abfrageergebnisse in einem Array in PHP ab, um sie dann später in einer Tabelle ausgeben zu können.
Deshalb muss das meiner Meinung nach in der gleichen Abfrage geschehen, damit eben vom Erstplatzierten in der Liste auch seine Aushilfen mitangezeigt werden, oder?

Ich hoffe, dass ich es einigermaßen verständlich erklären konnte...
Vielen Dank schon mal im Voraus.

MfG, cg710

Kraemer84
03.12.2014, 23:52
wie speicherst du das wie oft jemand aushilft ? hierzu mit Limit und WHERE abfragen kann man einiges bewirken .. sogar .. was mich am anfang gewundert hat das man Limits und WHERE mehrfach ansetzen kann zb WHERE name = ... and id = ...

//edit

Abfragen wie oft einer geholfen hat kannst du nur mit einer extra Abfrage

wenn du sortieren willst wer am meisten geholfen hat kann man mit einem WHERE zusatz lösen

Lokutos
04.12.2014, 01:45
Abfragen wie oft einer geholfen hat kannst du nur mit einer extra Abfrage
So nicht ganz richtig, man kann grundsätzlich meist alles mit einer abfrage machen nur ists nicht immer sinvoll...



SELECT `kegler`, count(if(`aushilfe` = 'Ja', `aushilfe`, 0)) as `aushilfe_anzahl`, AVG(`volle`) as `volle`, AVG(`abraumen`) as `abraumen`, AVG(`fehler`) as `fehler`, count(*) as `anzahl` FROM `Schnitt` WHERE `hdj` = 'Herren' GROUP BY `kegler` ORDER BY `volle`,`abraumen` DESC