2016-04-15 21 views
0

私はこれらの2つのテーブルを持っており、最初のテーブルの2つの外部キーの2番目のテーブルからいくつかの値を取得します。外部キーテーブルからフィールドを取得

チームテーブル:

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 

そして、私はこのPHPスクリプトでJSON形式でマッチテーブルに各チームのためにTeam_Logoを取得したいです。私はチームのロゴを取得しようとしましたが、残念ながらクエリが無効です。

誰かが私を助けることができますか?

<?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 team near Tここでmatches.first_team = team.Name OR matches.second_team = team.Name' 1行目 –

+2

あなたは "この"*?なぜOPは「これを試してください」? ***良い答え***は、何が行われたのか、それがなぜOPのためだけでなく、将来の訪問者のためにそうした方法で行われたのかについての説明を常に持っています。 –

0

リレーショナルデータベース構造を使用してください。

テーブル

両方の主キーを追加し、外部キーとして第2のテーブルの最初のテーブルの主キーの参照キーを追加します。

と下記のクエリを参照してください。

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

である私の編集した答え –

+0

あなたは、外部キーとしてマッチテーブルで「t_id」を追加参照してくださいましたチームテーブルから? –

関連する問題