2013-12-12 2 views
0

У меня есть две таблицы (матчи, команды). В таблице совпадений у меня есть id, team1, team2 (где team1 и team2 - это идентификатор команды). В таблице команд у меня есть идентификатор и имя. Как напечатать в php совпадения, но показывая имя команды вместо их идентификатора?Внутреннее соединение на PHP

Мой код (Печать TeamID только против TeamID):

<?php 
    require_once 'conf/conf.php'; 
    require_once 'functions.php'; 
    $query = mysql_query("SELECT time1 as t1id, time2 as t2id 
         FROM matches 
         INNER JOIN teams 
         ON 
         teams.id = matches.time1 
         "); 
    //echo mysql_num_rows($query); 
    while ($row = mysql_fetch_assoc($query)) 
    { 
     $t1 = $row["t1id"]; 
     $t2 = $row["t2id"];  
     echo ($t1 . " vs. " . $t2 . "<br>"); 
    } 
?> 
+1

'var_dump ($ row)' должен ответить на ваш вопрос. –

+0

Соедините таблицу дважды с помощью индекса и псевдонима. – rishta

ответ

4

Вы можете сделать что-то вроде этого (предполагается, что teams таблица имеет name столбец):

<?php 
    require_once 'conf/conf.php'; 
    require_once 'functions.php'; 
    $query = mysql_query("SELECT time1 as t1id, 
           time2 as t2id, 
           t1.name AS t1name, 
           t2.name AS t2name 
         FROM matches 
         INNER JOIN teams AS t1 
         ON t1.id = matches.time1 
         INNER JOIN teams AS t2 
         ON t2.id = matches.time2"); 
    //echo mysql_num_rows($query); 
    while ($row = mysql_fetch_assoc($query)) 
    { 
     $t1 = $row["t1name"]; 
     $t2 = $row["t2name"];  
     echo ($t1 . " vs. " . $t2 . "<br>"); 
    } 
?> 
+0

Работает как очарование, спасибо! –

+0

@ Raphael Нет проблем! – Leng

2

попробовать этот

require_once 'conf/conf.php'; 
require_once 'functions.php'; 
$query = mysql_query("SELECT teams1.id as t1id,teams1.name as name1, teams2.id as t2id, teams2.name as name2 
        FROM matches 
        INNER JOIN teams as teams1 ON teams1.id = matches.time1 
        INNER JOIN teams as teams2 ON teams2.id = matches.time2 
        "); 
//echo mysql_num_rows($query); 
while ($row = mysql_fetch_assoc($query)) 
{ 
    $t1 = $row["name1"]; 
    $t2 = $row["name2"];  
    echo ($t1 . " vs. " . $t2 . "<br>"); 
} 
0

Как я уже сказал в комментарии к вашему вопросу, дважды присоединитесь к таблице:

SELECT t1.name, t2.name 
FROM matches.m 
INNER JOIN teams AS t1 ON (t1.id = m.team1) 
INNER JOIN teams AS t2 ON (t2.id = m.team2) 
+0

Пожалуйста, добавьте некоторую форму объяснения в свой ответ. – tcooc

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