2016-05-24 15 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の(間のすべての以前の一致を示すことができるモジュールを作りたいです家にいても離れていても)。

これは私のコードですが、2つの可能性のあるマッチのうちの1つだけを表示しています。

$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を制限したいと思います。 2チームの間で最後の5試合をしたいだけです。

「opp_match」と「short_match」は、他のモジュールへの接続です。試合をチェックすると、ホームチームと離れたチームをチェックすることができます。

制限の有無にかかわらず、複数の結果を表示することはできません。

は、私はちょうどmatchID 1と2を示したいと思います。しかし、今、私はちょうどmatchID 1

EDITを取得しています:私は別の方法を試してみましたが、私はすべての試合を終えたロードしています。

$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

Worked xD。別の方法を試しましたが、終了したすべてのマッチをロードしています。上記のplsを参照してください。 – hornyy

関連する問題