maximum: MySQL-Problem: Query über 4 Tabellen mit mehreren Counts

Beitrag lesen

Hi,
vielen Dank für deine Antwort!

geht es um eine bestimmte Sportart?

Mannschaftssportarten generell. In meinem Fall Streethockey.

Davon abgesehen, finde ich deine Umsetzung unnötig komplex. Statt alles erst bei der Auswertung (Anzeige) berechnen zu lassen, solltest du evt. beim Eintragen von Ergebnissen Berechnungen (über Trigger) auslösen, welche in bestimmten Tabellen Updates auslösen. Damit sollte die Query, welche dir den "Liga" Stand ausgibt ein Kinderspiel werden.

Ich habe die Tore absichtlich in einer separaten Quelle abgelegt und nicht schon pro Spiel aufsummiert (siehe anderer Post)

Ich habe vor 4 Jahren mal ein (firmeninternes und nicht-reguliertes) Wettspiel für die Fussball WM gebaut, welches abgesehen von den Spielergebnissen natürlich noch die Wetten und Wettergebnisse mit berücksichtigen musste. Stand damals in etwa vor den selben Problemen, zu komplexe und unperformante Queries. Da hat selbst ein besseres Datenbanksystem als mysql nichts genutzt.

Habe eigentlich keine Probleme mit der Performance, habe nur das Problem das ich jetzt habe zum Anlass genommen mal die grundsätzliche Architektur des Query in Frage zu stellen, schien mir subjektiv nicht so sauber.

Warum hast du in "matches" 3x dieselbe Spalte als Key definiert. Einmal Primary Key hätte doch genügt?

Gar nicht bemerkt, ist korrigiert, danke.

"matches_draw" und "matches_won" sind ja Tabellen und keine Spalten. Vielleicht solltest du dem COUNT(*) darin noch einen Aliasnamen verpassen ... und dann:

matches_won.Anzahl * 3 + matches_draw.Anzahl

Schon probiert. Der Subquery tut in meinem Fall ja das Gleiche wie ein INNER JOIN (wenn ich mich nicht irre), demnach ist z.B. matches_won schon eine Spalte. Mehr als eine Spalte darf der Subquery auch garnicht zurückgeben, sonst gibts Den hier: "Error: Operand should contain 1 column(s)"