[英]Combining 3 tables in one single select query in php
如何将这3个表合并到php中的单个查询中? 当我使用此查询时,我从比赛和体育比赛中获取的值为null。 但是,当我将最后一个右联接更改为左联接时,日程表的值将为null。 我怎样才能解决这个问题? 谢谢。
的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连接到日程表。
这是我得到的输出
{"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"},
INNER JOIN运动和比赛,然后LEFT JOIN时间表
Matches.m_id表示150和151,而schedule.m_id表示null和null。
尝试将schedule.m_id中的NULL和NULL替换为150和151,然后检查结果
使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.