2016-11-23 71 views
0

3表如何將這3個表在一個單一的查詢在PHP?當我使用這個查詢時,我從匹配和運動中得到值爲空。但是,當我將最後一個權限連接更改爲左連接時,計劃的值變爲空。我怎樣才能解決這個問題?謝謝。結合在一個單一的選擇查詢在php

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); 
     ?> 

體育表被連接到匹配b S_ID而匹配表連接通過M_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

Right join?人們仍然使用這個?只有'INNER JOIN'用於匹配,或者當右(位置)表是前導表時使用'RIGHT JOIN'。 – sagi

+0

你的主桌是什麼?體育或時間表還是比賽?主桌是哪張桌子? – Viki888

+0

右連接是罕見的。只是說';-) – Strawberry

回答

1

INNER JOIN運動和火柴然後LEFT JOIN時間表

Matches.m_id說150和151而schedule.m_id說零和零。

嘗試將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