繁体   English   中英

在php中的单个选择查询中组合3个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM