2016-08-09 4 views
0

이 코드를 만들었지 만 테이블을 생성 할 때 첫 번째 행만 생성하면 테이블에 여러 행이 있습니다. 삽입 할 전체 데이터가 필요합니다. . 어떤 도움이 여기MySql : 쿼리는 선택 항목의 첫 번째 행만 반환합니다.

<?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"; 
} 
?> 

답변

2

귀하의 질의는 GROUP BY로 집계 함수 (avg())가 있습니다. 그러나 단지 GROUP BY을 추가하는 것이 옳은 것처럼 보이지는 않습니다.

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; 

참고 : 나는 당신이 뭔가를 원한다고 생각 당신은 제대로 열 이름을 철자한다 : "평균"과 올바른 철자는 "점수".

관련 문제