| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Ermittle die Anzahl der Siege, die NACH der letzten Niederlage (Subselect, Sortierung nach Datum, nur Niederlagen des Teams, nur erster DS) vorkommen. Ich würde mir in die matches-Tabelle noch nen zusätzlichen Schlüssel für das winning-team anlegen, 0 bei untentschieden. Machts einfacher bei den Abfragen, anstatt immer den Torvergleich und die Heim- Auswärtsmannschaftsprüfung machen zu müssen.
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Doch, das geht so. Du hast in Deiner Logik den Self-Join vergessen. Wenn ich jeden Sieg mit den darauf folgenden Niederlagen joine, dann wird die Länge der Serie aus den Spieltagen errechenbar. Und zwar ganz ohne Zählvariable. Gruß Jens |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Kannst Du kriegen. Bitte poste mal die CREATE TABLE-Statements zu Deinen drei Tabellen und ein paar Beispielsdatensätze. (Bitte auch gleich als INSERT.) Das ganze hat einen Komplexitätsgrad, wo ich auch erst mal kurz spielen muss und kein ungetestetes SELECT hier ins Forum tackern möchte. Gruß Jens |
| | |
| | ||
| Neuer Benutzer Registriert seit: 22.06.2011
Beiträge: 9
PHP-Kenntnisse: Anfänger ![]() | Zitat:
Code: CREATE TABLE IF NOT EXISTS `eintraege` ( `eintrags_id` int(11) NOT NULL AUTO_INCREMENT `bemerkung` varchar(32) DEFAULT NULL, `datum` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' PRIMARY KEY (`eintrags_id`) ) ENGINE=InnoDB CREATE TABLE IF NOT EXISTS `teams` ( `team_id` int(11) NOT NULL AUTO_INCREMENT `teamname` varchar(75) NOT NULL DEFAULT '' PRIMARY KEY (`team_id`), UNIQUE KEY `teamname` (`teamname`) ) ENGINE=InnoDB CREATE TABLE IF NOT EXISTS `matches` ( `match_id` int(11) NOT NULL AUTO_INCREMENT, `eintrags_id` int(11) NOT NULL DEFAULT '0', `team_heim_id` int(11) NOT NULL DEFAULT '0', `team_gast_id` int(11) NOT NULL DEFAULT '0', `tore_heim` int(3) NOT NULL DEFAULT '0', `tore_gast` int(3) NOT NULL DEFAULT '0', PRIMARY KEY (`match_id`) ) ENGINE=InnoDB INSERT INTO `eintraege` (`eintrags_id`, `bemerkung`, `datum`) VALUES (1, '1. Spieltag 2010/11', '2010-08-19 14:46:08'), (2, '2. Spieltag 2010/11', '2010-08-19 15:18:13'), (3, '3. Spieltag 2010/11', '2010-08-19 19:07:17') INSERT INTO `teams` (`team_id`, `teamname`) VALUES (1, 'Team 1'), (2, 'Team 2'), (3, 'Team 3'), (4, 'Team 4'), (5, 'Team 5'), (6, 'Team 6'), (7, 'Team 7'), (8, 'Team 8'), (9, 'Team 9'), (10, 'Team 10'), (11, 'Team 11'), (12, 'Team 12'), (13, 'Team 13'), (14, 'Team 14'), (17, 'Team 15'), (18, 'Team 16') INSERT INTO `matches` (`match_id`, `eintrags_id`, `team_heim_id`, `team_gast_id`, `tore_heim`, `tore_gast`) VALUES (1, 1, 1, 2, 2, 3), (2, 1, 3, 4, 0, 1), (3, 1, 5, 6, 5, 3), (4, 1, 7, 8, 4, 3), (5, 1, 9, 10, 1, 7), (6, 1, 11, 12, 2, 1), (7, 1, 13, 14, 4, 2), (8, 1, 17, 18, 6, 1), (9, 2, 14, 1, 2, 5), (10, 2, 7, 10, 0, 0), (11, 2, 2, 11, 2, 0), (12, 2, 17, 9, 6, 0), (13, 2, 12, 18, 6, 2), (14, 2, 8, 3, 2, 1), (15, 2, 4, 5, 5, 1), (16, 2, 6, 13, 5, 0), (17, 3, 9, 12, 4, 2), (18, 3, 10, 3, 8, 1), (19, 3, 5, 13, 2, 2), (20, 3, 7, 17, 5, 1), (21, 3, 2, 18, 10, 2), (22, 3, 11, 14, 4, 2), (23, 3, 4, 8, 0, 5) | |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Also ich muss eingestehen, dass ich mit meinem Vorschlag zwar recht nah dran war, mit dem Minimalabstand aber doch ein Stück weit daneben lag. Die Berechnung der Serien anhand der Statiwechsel ist aber trotzdem möglich. So lässt sich aber z.B. für ein Team die längste Siegesserie innerhalb einer Saison berechnen: Code: SELECT
t.teamname,
MAX(COALESCE(e2.spieltag,4)-COALESCE(e1.spieltag,4)) AS seriendauer
FROM
teams t
LEFT JOIN (matches m1 LEFT JOIN eintraege e1 ON m1.eintrags_id=e1.eintrags_id)
ON t.team_id IN(m1.team_heim_id,m1.team_gast_id)
AND ((t.team_id=m1.team_heim_id AND m1.tore_heim>m1.tore_gast)
OR (t.team_id=m1.team_gast_id AND m1.tore_gast>m1.tore_heim))
LEFT JOIN (matches m2 LEFT JOIN eintraege e2 ON m2.eintrags_id=e2.eintrags_id)
ON t.team_id IN(m2.team_heim_id,m2.team_gast_id)
AND e2.datum>e1.datum
AND e1.saison=e2.saison
AND ((t.team_id=m2.team_heim_id AND m2.tore_heim<m2.tore_gast)
OR (t.team_id=m2.team_gast_id AND m2.tore_gast<m2.tore_heim))
GROUP BY
t.team_id,
t.teamname
Bei der Query ist noch zu beachten, dass in den COALESCE immer die Nummer des nächsten folgenden Spieltags zu nennen ist. Ansonsten geht die Rechnung natürlich nicht auf, da es bei Dauersiegern oder Verlierern u.Umst. in der DB keinen folgenden Statuswechsel oder eben keinen Sieg als Berechnungsgrundlage gibt. Gruß Jens |
| | |
| | |
| Neuer Benutzer Registriert seit: 22.06.2011
Beiträge: 9
PHP-Kenntnisse: Anfänger ![]() | @Jens Vielen Dank!!! Ich versuche gerade noch zu verstehen was du da genau gemacht hast, momentan scheitere ich noch Im besonderen bereitet mir folgendes noch Probleme: Code: ... MAX(COALESCE(e2.spieltag,4)-COALESCE(e1.spieltag,4)) AS seriendauer ... douse29 |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mysql funktioniert nicht (Erweiterung nicht erkannt!?) | pfump | Server, Hosting und Workstations | 10 | 17.03.2012 11:07 |
| Mysql Server startet nicht mehr | Nicolas2006 | Datenbanken | 2 | 20.03.2011 16:03 |
| PHP Zugriff auf MySQL Community Server gewähren | daemonTutorials | Datenbanken | 8 | 21.02.2011 12:28 |
| MySQL Datentransfer (Dateigroesse 4MB) via Shell Zugang oder einfacher | promoterlv | Datenbanken | 1 | 14.11.2010 22:12 |
| [Erledigt] PHP bekommt keine Verbindung zu MySQL | SaKe | Datenbanken | 15 | 20.09.2010 14:45 |
| Mysql fehler bei externen Zugriff | SteiniKeule | Datenbanken | 4 | 18.06.2010 12:54 |
| PDO MySQL abfrage funktioniert nicht | Bloodydead | PHP Tipps 2010 | 8 | 18.06.2010 11:08 |
| angeklickte checkboxen mit mysql auswerten | klausmaus | PHP Tipps 2010 | 2 | 24.05.2010 23:15 |
| [Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank | _youngenterpriser_ | Datenbanken | 2 | 05.02.2008 17:56 |
| Mysql Server Einstellunen Optimieren | pchero | Datenbanken | 3 | 01.05.2007 19:50 |
| [Erledigt] not allowed to connect to this MySQL server | PHP Tipps 2005-2 | 2 | 23.09.2005 18:34 | |
| Suche Tipps für Persormance-Steigerung (Geld für Nützliches) | Beitragsarchiv | 18 | 16.08.2005 10:57 | |
| MYSQL läuft nur wenn /tmp auf 777 | Datenbanken | 5 | 06.07.2005 08:38 | |
| mysql root passwort vergessen | Datenbanken | 1 | 29.05.2005 11:33 | |
| MySQL Select-result auswerten? | Datenbanken | 7 | 21.05.2005 21:06 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| mysql sortieren nach spalten inhalt |