2014-09-13 52 views
0

無論TeamA是主場還是客場球隊,我都希望能夠找到A隊在過去6場比賽(總數)中的得分和總分。 例如:我們假設$ teamA =「阿森納」,並搜索最近6分的結果,mysql隊進球總進球數

這給下面的結果:

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和$ 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; 
} 

我的問題是限制查詢返回的最後6場主場比賽還是去年6客場比賽。

+0

您可以提供架構嗎?另外,使用mysql_ *函數是[棄用](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)。 – 2014-09-13 15:19:23

+0

你想要什麼結果?你如何定義「最後六場比賽」?有沒有時間戳? – 2014-09-13 15:19:56

+0

你可以顯示錶格結構嗎? – Sushant 2014-09-13 15:23:00

回答

0

可以使用case表達,以確定是否是球隊的主隊或客隊:

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

我試過這個,但它不限於6,子查詢是否可以用這個 – 2014-09-13 17:44:04

0

@Mureinik我想你的解決方案和鑽頭調整後,我已經得到了答案,我需要,謝謝你的幫助。我開始得到這個錯誤

每個派生表都必須有自己的別名。

我向查詢添加了一個別名'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