2016-08-09 61 views
0

Ich habe diesen Code erstellt, aber wenn ich es die Tabelle erstellt, aber nur mit der ersten Zeile, die Tabelle ich bekomme die Daten hat mehrere Zeilen, ich brauche die vollständigen Daten eingefügt werden . Einige helfen hierMySql: Abfrage gibt nur die erste Zeile aus der Auswahl

<?php 
include("conf.php"); 
$file_name = "testing2"; 
$table = "TEMP_".$file_name; 
$table1 = "TEMP1_".$file_name; 
$query = "CREATE TABLE IF NOT EXISTS $table1(Id INT AUTO_INCREMENT PRIMARY KEY) 
CHARACTER SET utf8 COLLATE utf8_general_ci 
SELECT Team, GamesPlayedHome, GoalsScorredHome, GoalsAcceptedHome, RedCardGotHome, AvarageGoalsScorredHome, AvarageGoalsAcceptedHome, GamesPlayedAway, GoalsScorredAway, GoalsAcceptedAway, RedCardGotAway, AvarageGoalsScorredAway, AvarageGoalsAcceptedAway, 
AvarageRedCardGotHome, AvarageRedCardGotAway, AvarageShotsOnTargedHome, AvarageShotsOnTargedAway, 
AvarageGoalsScorredHome/avg(AvarageGoalsScorredHome) AS AttackingStrengthHome, AvarageGoalsAcceptedHome/avg(AvarageGoalsAcceptedHome) AS DefensiveStrengthHome, 
AvarageGoalsScorredAway/avg(AvarageGoalsScorredAway) AS AttackingStrengthAway, AvarageGoalsAcceptedAway/avg(AvarageGoalsAcceptedAway) AS DefensiveStrengthAway 
FROM $table 
"; 
$data= mysqli_query($conn,$query) or die(mysqli_error($conn)); 
while($row = mysqli_fetch_assoc($data)){ 
    foreach($row as $cname => $cvalue){ 
     print "$cname: $cvalue\t"; 
    } 
    print "\r\n"; 
} 
?> 

Antwort

2

Ihre Anfrage hat Aggregationsfunktionen (avg()) ohne GROUP BY. Aber das Hinzufügen einer GROUP BY scheint nicht das Richtige zu sein. Ich denke, dass Sie so etwas wie dies wollen:

SELECT Team, GamesPlayedHome, GoalsScorredHome, GoalsAcceptedHome, 
     RedCardGotHome, AvarageGoalsScorredHome, AvarageGoalsAcceptedHome, 
     GamesPlayedAway, GoalsScorredAway, GoalsAcceptedAway, RedCardGotAway, 
     AvarageGoalsScorredAway, AvarageGoalsAcceptedAway, 
     AvarageRedCardGotHome, AvarageRedCardGotAway, AvarageShotsOnTargedHome, AvarageShotsOnTargedAway, 
     AvarageGoalsScorredHome/tt.avg_AvarageGoalsScorredHome AS AttackingStrengthHome, 
     AvarageGoalsAcceptedHome/tt.avg_AvarageGoalsAcceptedHome AS DefensiveStrengthHome, 
     AvarageGoalsScorredAway/tt.avg_AvarageGoalsScorredAway AS AttackingStrengthAway, 
     AvarageGoalsAcceptedAway/tt.avg_AvarageGoalsAcceptedAway AS DefensiveStrengthAway 
FROM $table t CROSS JOIN 
    (SELECT avg(AvarageGoalsScorredHome) as avg_AvarageGoalsScorredHome, 
      avg(AvarageGoalsAcceptedHome) as avg_AvarageGoalsAcceptedHome, 
      avg(AvarageGoalsScorredAway) as avg_AvarageGoalsScorredAway, 
      avg(AvarageGoalsAcceptedAway) as avg_AvarageGoalsAcceptedAway 
     FROM $table tt 
    ) tt; 

Hinweis: Sie sollten Spaltennamen richtig schreiben: „mittel“ und „erzielte“ sind die richtigen Schreibweisen.