2016-05-24 3 views
0

Я не могу понять, как сделать выбор матчей между двумя командами, даже если он находится дома или вдали.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 

У меня есть много матчей, и я хочу, чтобы сделать модуль, где я могу показать все предыдущие матчи между командой А и командой Б (даже если он дома или вдали).

Прямо сейчас это мой код, но только показывает 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.

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; 

Это предполагает, что если одно совпадение имеет меньший идентификатор, чем другой, оно было воспроизведено перед другим.

+0

Работал xD. Я попробовал другой способ, но я загружаю все закончившиеся матчи. см. выше PLS. – hornyy

Смежные вопросы