ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
439
439
EMPFEHLEN
-
Hi,
Ich versuche gerade eine Statistic fuer Spieler zu erstellen, habe mich voellig festgefahren und hoffe nun, dass Ihr mir weiterhelfen koennt.
Ich habe also eine Tabelle tblMatchPlayers:
- FixtureID
- Player
- Goals
- MatchTypeID
Nun moechte ich auf meiner Statistic Seite eine Tabelle anzeigen mit den folgenden Daten:
Player, League Goals, CupA Goals, CupB Goals ... Total Goals
Ich vermute das ich dies ueber Subqueries erledigen muss. Hier mal mein Code:
Ich habe jetzt das Ganze erweitert:Code :1 2 3 4 5 6 7 8 9 10 11 12
SELECT Tab1.* FROM (SELECT Sum(tblMatchPlayers.Goals) AS TotalGoals, tblMatchPlayers.Player AS Player FROM tblmatchplayers GROUP BY Player) AS Tab1 GROUP BY Player ORDER BY Tab1.TotalGoals desc
Code :1 2 3
(SELECT Sum(tblMatchPlayers.Goals) , tblMatchPlayers.Player AS Player, MatchTypeID FROM tblmatchplayers GROUP BY MatchTypeID,Player) AS Tab2
Aber die Werte passen so ueberhaupt noch nicht. Ist das ueberhaupt moeglich was ich vor habe? Hat jemand eine Idee? Egal was ich bisher probiert habe gab voellig falsche Ergebnisse. Freue mich ueber jeden Ansatz.
Gruss Bicko
-
Ohne die Inhalte der Tabelle und das gewünschte Resultat zu sehen, sehe ich grad keinen groben Fehler.
Was machst du mit den Tab2? Ersetzt der Tab1? Oder ist es eine 2te Quelle im FROM-Teil des Haubtqueries?
Am besten poste mal einie Testdaten, wie sie in der Tabelle sind und wie sie als Resultat rauskommen müssten.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hi,
Also Tab2 ist ein zusaetzlicher Subquery also sieht es jetzt so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
SELECT Tab1.* , Tab2.* FROM (SELECT Sum(tblMatchPlayers.Goals) AS TotalGoals, tblMatchPlayers.Player AS Player FROM tblmatchplayers GROUP BY Player) AS Tab1, (SELECT Sum(tblMatchPlayers.Goals) , tblMatchPlayers.Player AS Player, MatchTypeID FROM tblmatchplayers GROUP BY MatchTypeID,Player) AS Tab2 GROUP BY Tab2.Player, Tab2.MatchTypeID ORDER BY Tab1.TotalGoals desc
Mein Tabellendaten sehen so aus:
FixtureID, Player, Goals, MatchTypeID
10, 'Player 1', 3, 55
10, 'Player 2', 4, 55
11, 'Player 2', 2, 35
11, 'Player 1', 1, 35
Mein Ergebnis so:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
Array ( [0] => 4 [TotalGoals] => 4 [1] => Player 1 [Player] => Player 1 [2] => 1 [Sum(tblMatchPlayers.Goals)] => 1 [3] => Player 1 [4] => 35 [MatchTypeID] => 35 ) Array ( [0] => 4 [TotalGoals] => 4 [1] => Player 1 [Player] => Player 2 [2] => 2 [Sum(tblMatchPlayers.Goals)] => 2 [3] => Player 2 [4] => 35 [MatchTypeID] => 35 ) Array ( [0] => 4 [TotalGoals] => 4 [1] => Player 1 [Player] => Player 1 [2] => 3 [Sum(tblMatchPlayers.Goals)] => 3 [3] => Player 1 [4] => 55 [MatchTypeID] => 55 ) Array ( [0] => 4 [TotalGoals] => 4 [1] => Player 1 [Player] => Player 2 [2] => 4 [Sum(tblMatchPlayers.Goals)] => 4 [3] => Player 2 [4] => 55 [MatchTypeID] => 55 )
Dabei duerfte es ja nur 2 Results geben, da ist dann schon mal der erste Fehler. Ich vermute das liegt an Group By oder?
-
Nope. Das liegt daran, dass du 2 Quellen hast und diese nicht miteinander verknüpfst. Somit hast du [Anzahl Zeilen Tab1]x[Anzahl Zeilen Tab2] Zeilen in der AUsgabe.
Du musst diese 2 Tabs entweder mittels JOIN-Befehl oder mit einer Bedinung im WHERE-Teil verknüpfen
Code sql:1
WHERE Tab1.Player = Tab2.Player
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Oh Du hast Recht. Vielen Dank ! Jetzt habe ich 4 results und Frage mich ob das so Richtig ist....
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
Array ( [0] => Player 2 [Player] => Player 2 [1] => 6 [TotalGoals] => 6 [2] => 2 [Goals] => 2 [3] => League Cup [MatchType] => League Cup [4] => 35 [MatchTypeID] => 35 ) Array ( [0] => Player 2 [Player] => Player 2 [1] => 6 [TotalGoals] => 6 [2] => 4 [Goals] => 4 [3] => League [MatchType] => League [4] => 55 [MatchTypeID] => 55 ) Array ( [0] => Player 1 [Player] => Player 1 [1] => 4 [TotalGoals] => 4 [2] => 1 [Goals] => 1 [3] => League Cup [MatchType] => League Cup [4] => 35 [MatchTypeID] => 35 ) Array ( [0] => Player 1 [Player] => Player 1 [1] => 4 [TotalGoals] => 4 [2] => 3 [Goals] => 3 [3] => League [MatchType] => League [4] => 55 [MatchTypeID] => 55 )
Mein Query hat sich etwas abgewandelt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
SELECT Tab1.Player , TotalGoals, Tab2.Goals, Tab2.MatchType, Tab2.MatchTypeID FROM (SELECT Sum(tblMatchPlayers.Goals) AS TotalGoals, tblMatchPlayers.Player FROM tblmatchplayers GROUP BY Player) AS Tab1, (SELECT Sum(tblMatchPlayers.Goals) AS Goals, tblMatchPlayers.MatchTypeID, tblMatchType.MatchType, Player FROM tblmatchplayers INNER JOIN tblMatchType ON tblMatchPlayers.MatchTypeID = tblMatchType.MatchTypeID GROUP BY tblMatchPlayers.MatchTypeID,Player) AS Tab2 WHERE Tab1.Player = Tab2.Player GROUP BY Tab2.MatchTypeID, Tab1.Player ORDER BY TotalGoals desc, Tab1.Player
Macht das jetzt so Sinn? Ich vermute mal das ich die MatchTypes nicht in ein array bekomme. Was mich verwundert ist warum ich die Eintraege immer doppelt habe, z.B
[3] => League Cup
[MatchType] => League Cup
Kann ich das noch irgendwie verbesser bzw. ist das ueberhaupt so richtig?
-
Nimmt dein SQL als Unterabfrage und häng dann noch den die Tabelle mit den MathcType an.
http://ch.php.net/manual/de/function...etch-array.php
Die Daten werden sowohl unter numerischen Indizes des Ergebnis-Arrays abgelegt, als auch unter assoziativen Indizes. Als Schlüssel für die assoziativen Indizes werden die Feldnamen benutzt.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Mysql Abfrage mit mehreren Selects fehler Subquery
Von kramoo im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 06.01.11, 23:15 -
Mysql update mit Subquery returns more than 1 row
Von p-dichlorbenzol im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 03.03.09, 15:14 -
MYSQL Sortierung mit subquery
Von Cusco im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 26.02.09, 17:55 -
MySql Subquery über 2 Tabellen
Von Deletemaster im Forum Relationale DatenbanksystemeAntworten: 12Letzter Beitrag: 22.02.08, 23:56 -
[MySQL] Hilfe bei Subquery
Von Flusswind im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 23.07.06, 23:20





Zitieren


Login





