2014-09-13 4 views
0

TeamA가 원정 팀이든 원정 팀이든, 지난 6 경기 동안 팀 A가 득점하고 합계 한 합계를 찾으려고합니다. 예를 들어 :mysql 팀 A 골 득점

Leicester City 1 - 1 Arsenal 
Everton   2 - 2 Arsenal 
Arsenal   2 - 1 Crystal Palace 
Norwich City 0 - 2 Arsenal 
Arsenal   1 - 0 West Bromwich Albion 
Arsenal   3 - 0 Newcastle United 

위 지난 6을 얻을 수있는 쿼리의 출력 : 우리는 아래의 결과를 제공

는 teamA = '아스날'$을 가정하고 지난 6 개 결과를 검색 할 수 있습니다 결과는, 지금은 내가 가진 문제는 쿼리에 LIMIT하다 지난 6 개 홈 게임이나 멀리 마지막 6 게임을 반환하는 목표는 $ teamA 위해 총과 $ teamB

$query = mysql_query("SELECT * FROM football WHERE `HomeTeam` = '$teamA' OR AwayTeam = '$teamA' "); 

while ($row = mysql_fetch_array($query)){ 

    if ($row['HomeTeam'] = $teamA){ 
    $teamAgoals = $teamAgoals + $row['FTHG']; 
    } 


    if ($row2['AwayTeam'] = $teamA){ 
    $teamAgoals = $teamAgoals + $row['FTAG']; 
    } 
    $tot++; 

    if ($tot == 7): 
    exit; 
    endif; 
} 

얻을 필요가있다.

SELECT SUM (CASE WHEN `HomeTeam` = '$teamA' THEN fthg ELSE ftag END) 
FROM  football 
WHERE '$teamA' IN (`HomeTeam`, `AwayTeam`) 
ORDER BY `MatchDate` DESC -- I'm guessing there's something like this 
LIMIT 6 
+0

스키마를 제공 할 수 있습니까? 또한, mysql_ * 함수를 사용하는 것은 [deprecated] (http://php.net/manual/en/intro.mysql.php)이며 새로운 코드에서 사용하는 것은 권장하지 않습니다. 대신 [PDO] (http://php.net/manual/en/book.pdo.php) 또는 [mysqli] (http://php.net/manual/en/book.mysqli.php)로 전환하는 것이 좋습니다. –

+0

원하는 결과는 무엇입니까? "지난 6 경기"는 어떻게 정의합니까? 타임 스탬프가 있습니까? –

+0

테이블 구조를 표시 할 수 있습니까? – Sushant

답변

0

당신이 결정하는 case 표현을 사용할 수 있습니다 도와 줘서 고마워. 이 오류가 발생하기 시작했습니다.

모든 파생 테이블에는 고유 한 별칭이 있어야합니다.

별칭 'totals'가 쿼리에 추가되어 완벽하게 작동합니다.

SELECT SUM(CASE WHEN `HomeTeam` = 'Arsenal' THEN FTHG ELSE FTAG END) AS scored, SUM(CASE WHEN `AwayTeam` = 'Watford' THEN FTHG ELSE FTAG END) AS conceeded FROM (SELECT Hometeam,Awayteam,FTHG,FTAG FROM football WHERE 'Arsenal' IN (`HomeTeam`, `Awayteam`) ORDER BY `id` DESC LIMIT 6) as totals 
+0

입니다.이 방법을 시도했지만 6으로 제한되지 않습니다. 하위 쿼리가 가능합니다. –

0

@Mureinik 내가 솔루션을 시도하고 조정의 조금 후에 내가 응답 I있어 : 팀이 홈 팀 또는 원정 팀 인 경우