2016-11-23 18 views
0

どのようにこれらの3つのテーブルをphpで1つのクエリで組み合わせるのですか?私はこのクエリを使用すると、一致とスポーツの値をnullとして取得します。しかし、最後の右結合を左結合に変更すると、scheduleの値がnullになります。これをどうすれば解決できますか?ありがとう。PHPで1つの選択クエリで3つのテーブルを組み合わせる

PHP

<?php 
     $db_name = "atfest_db"; 
     $mysql_user = "root"; 
     $mysql_pass = ""; 
     $server_name = "localhost"; 
     $sql = "SELECT teamone,teamtwo,s_name,start,end,venue FROM `sport` right JOIN `matches` ON `matches`.`s_id` = `sport`.`s_id` right JOIN `schedule` ON `schedule`.`m_id` = `matches`.`m_id`"; 
     $con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); 
     $result = mysqli_query($con,$sql); 


     $response = array(); 


     while($row=mysqli_fetch_array($result)) 

     { 
     array_push($response, array("teamone"=>$row[0], "teamtwo"=>$row[1], 
     "s_name"=>$row[2])); 

     } 

     echo json_encode (array("schedule_response"=>$response)); 




     mysqli_close($con); 
     ?> 

マッチテーブルはM_IDによってスケジュールテーブルに接続されているスポーツ・テーブルが一致B S_IDに接続されています。

マッチ表 enter image description here

スケジュール表 enter image description here

スポーツ表 enter image description here

これは私が

得る出力されます
{"schedule_response":[{"start":null,"end":null,"venue":null,"teamone": 
     "hehe","teamtwo":"haha","s_name":"Soccer"} 

私が必要とするのは、開始、終了、会場がスケジュール表から値を取得するためです。この

{"schedule_response":[{"start":2016-11-30 00:00:00,"end":2016-12-01 
    00:00:00,"venue":aaaaaa,"teamone":"hehe","teamtwo":"haha","s_name":"Soccer"}, 

のようなもののすべてのテーブルのサンプル・データ enter image description here

+0

右ジョイン?人々はまだこれを使用していますか?一致するもののみに 'INNER JOIN'を使用するか、または正しい(位置の)テーブルが先頭のテーブルである場合に' RIGHT JOIN'を使用してください。 – sagi

+0

あなたのメインテーブルは何ですか?スポーツ、スケジュール、またはマッチ?どのテーブルがメインテーブルですか? – Viki888

+0

右のジョインは、まれにしかありません。ちょうどスティーン ';-) – Strawberry

答えて

1

インナースポーツとマッチをJOIN、左スケジュールをJOIN

schedule.m_idがnull、nullに言いながらMatches.m_id 150及び151を言います。

schedule.m_idのNULLとNULLを150と151に変更してから、結果を確認してください。

-1

left joinの代わりright joinを使用し、同じクエリ。

Select * 
from `schedule ` as t1 
left join `matches` as t2 
left join `sport` as t3 
where t1.m_id = t2.m_id 
and t2.s_id = t3.o_id 
+0

これは有効な構文ではありません。 – Strawberry

関連する問題