2016-04-15 2 views
0

У меня эти две таблицы, и я хочу получить некоторые значения из второй таблицы для двух внешних ключей в первой таблице.Извлечь поля из таблицы внешних ключей

Team стол:

ID | Name   | No_Players | Country | F_Year | Team_Logo 
-----+---------------+------------+----------+--------+---------------------- 
1 | Real Madrid | 22  | Spain | 1940 | Http://Xyz.jpg 
2 | Arsenal  | 22  | England | 1950 | Http://XXYYZZ.jpg 
3 | FCB.Barcelona | 22  | Spain | 1960 | Http://YYZZz.jpg 
4 | Bayern Meunekh| 22  | Germany | 1940 | Http://GGG.jpg  

Матчи стол:

ID | Date  |First_Team  | Second_Team | M_Country |M_City | M_Period | Result 
------------------------------------------------------------------------------------------ 
1 |15-02-2016 | Real Madrid | Arsenal  | Spain  | Madrid | 120  | 1-1 
2 |19-03-2016 | FCB.Barecolna | Madrid  | Spain  | Madrid | 90  | 4-5 

И я хочу, чтобы получить Team_Logo Для каждой команды в таблице соответствий в виде JSON в этом PHP скрипт , Я попытался получить логотип команды, но, к сожалению, запрос недействителен.

Если кто-нибудь может мне помочь, пожалуйста?

<?php 
require ('config.php'); 
$conn = mysqli_connect($servername, $username, $password, $db); 
$query = "select * from matches,team where matches.first_team=team.Name OR matches.second_team=team.Name"; 
$result = mysqli_query($conn, $query); 
$rows = array(); 
echo mysqli_error($conn); 

while($row = mysqli_fetch_assoc($result)) { 
    $rows[]=$row; 
} 

echo json_encode($rows); 
?> 
+0

Вам нужно использовать соединения – Nehal

ответ

3
SELECT 
    matches.*, 
    t1.Team_Logo AS logo1, 
    t2.Team_Logo AS logo2 
FROM matches 
JOIN team AS t1 
    ON t1.Name = matches.First_Team 
JOIN team As t2 
    ON t2.Name = matches.Second_Team 

отметить также, что вы не должны выбрать *, потому что Id столбцы из таблиц команды переопределяет столбец Id таблицы спичек. Вот почему вы должны включать только те столбцы, которые вы хотите выбрать.

+0

Это правильный запрос –

1

Вы должны попробовать этот запрос:

$query="select m.*,t.* from matches as m INNER JOIN on team as t1 ON m.First_Team=t1.Name JOIN team As t2 
ON m.Second_Team=t2.Name"; 
+0

это дает мне ошибку –

+0

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с командой on в качестве t, где указаны match.first_team = team.Name OR matches.second_team = team.Name 'в строке 1 –

+2

Вы * «предположите, что они должны попробовать это"*? Почему OP «попробует это»? *** Хороший ответ *** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO. –

0

Использование реляционной структуры базы данных.

добавить первичный ключ для таблицы как

добавить ссылочный ключ первичного ключа первой таблицы во второй таблице в качестве внешнего ключа.

и см. Ниже запрос.

sql="SELECT * FROM Matches as m JOIN Team as t ON t.ID = m.t_id where t.id=1 OR t.id=2 
+0

Кроме того, это дает мне ошибку: Неизвестный столбец «mtid» в «по статье» –

+0

бы вы добавить «t_id» в таблице соответствий, как внешний ключ, см из таблицы команд? –