2016-05-24 94 views
0

我無法弄清楚如何選擇2個團隊之間的匹配,即使在家中或離開時也是如此。SQL PHP在相同的查詢中選擇具有多個條件的列

例子:

我有這個表:

MatchID | status | date | short (home) | opponent (Away) 
1   ENDED  XXX  TEAM A   TEAM B 
2   ENDED  XXX  TEAM B   TEAM A 
3   ENDED  XXX  TEAM C   TEAM B 
4   ENDED  XXX  TEAM D   TEAM A 

我有很多的比賽,我想打一個模塊在那裏我可以顯示A隊和B隊之間之前的所有匹配(即使在家中或離開)。

現在這是我的代碼,但只顯示1匹配的2個可能的匹配。

$ergebnis = safe_query("SELECT * FROM table WHERE status='ENDED' AND ((opponent = '".$opp_match."' AND short = '".$short_match."') OR (opponent = '".$short_match."' AND short = '".$opp_match."')) ORDER BY date LIMIT 0,5"); 

而我想限制0,5。只需要兩隊之間的最後5場比賽。

「opp_match」和「short_match」是與其他模塊的連接。當我檢查比賽時,我可以檢查主隊和客隊。

有或沒​​有限制我不能顯示多個結果。

我只是想表明matchID 1和2,但是現在我正準備matchID 1.

編輯:我嘗試另一種方式,但我加載全部結束比賽。

$ergebnis = safe_query("SELECT * FROM ".PREFIX."upcoming WHERE status='ENDED'"); 
    $i=1; 
    while($ds=mysql_fetch_array($ergebnis)) { 

    if($ds['short']==$short_match AND $ds['opponent']==$opp_match) { 
      eval ("\$matches = \"".gettemplate("matches")."\";"); 
      echo $matches; 
    } 
    elseif($ds['opponent']==$short_match AND $ds['short']==$opp_match) { 
     eval ("\$matches = \"".gettemplate("matches")."\";"); 
     echo $matches; 
    } 
    else echo ''; 

$ i ++; }

+1

您在查詢中提及了諸如對手和短的內容,但在您的表格中似乎沒有任何意義。爲了獲得最後5場比賽,你需要(a)有一個與比賽相關的日期,或者(b)讓我們知道如果更大的'matchId'意味着更晚的日期 – apokryfos

+0

你是對的。我錯過了一些點。我已經改變了一些信息,現在可以給我一個提示嗎? – hornyy

回答

0

這項工作?

SELECT * 
FROM table 
WHERE status = "ENDED" 
AND 
(
    (opponent = "team1" AND short = "team2") 
    OR 
    (opponent = "team2" AND short = "team1") 
) 
ORDER BY MatchID DESC 
LIMIT 5; 

這假定如果一個匹配的ID比另一個匹配的小,則它已經在另一個匹配。

+0

工作xD。我嘗試了另一種方式,但我正在加載所有結束的比賽。見上面請。 – hornyy

相關問題