SQL PHP在同一查询中选择具有多个条件的列

时间:2016-05-24 14:56:09

标签: php mysql select

我无法弄清楚如何选择2支球队之间的比赛,即使是在家还是在外。

示例:

我有这张桌子:

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队之前的所有比赛。(即使是在家里或在外)。

现在这是我的代码,但只显示了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 个答案:

答案 0 :(得分: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小于另一个匹配,则它已经在另一个匹配之前播放。