mySQL自然连接以显示类似于左外连接的结果
我有以下mySQL查询:mySQL自然连接以显示类似于左外连接的结果,mysql,sql,database-design,join,Mysql,Sql,Database Design,Join,我有以下mySQL查询: SELECT * FROM `objects` natural join `gPeople` natural join `gVip` natural join `gTeachers` 返回: object_id name vip_code subject ---------------------------------------------------------- 003 John
SELECT * FROM `objects`
natural join `gPeople`
natural join `gVip`
natural join `gTeachers`
返回:
object_id name vip_code subject
----------------------------------------------------------
003 John 9003 Math
这是因为“约翰”在人群、贵宾和老师中
我有两个小组中的其他人,希望他们表现出:
object_id name vip_code subject
----------------------------------------------------------
001 Mary History
002 Holly 9002
003 John 9003 Math
我曾尝试过左外连接,但由于我使用结果的方式,我最终得到了许多objects_id列的副本,这是不需要的
注意:我必须使用*因为它是我要做的事情的核心。我需要表能够支持添加/删除的列,并且查询能够提取它们
这是我尝试过的SQL小提琴,但我的结果如下所示:
object_id object_id name object_id vip_code object_id subject
------------------------------------------------------------------------------
001 001 Mary 001 History
002 002 Holly 002 9002
003 003 John 003 9003 003 Math
有人知道这样做的方法吗?我可以通过在PHP中编辑结果来解决我的问题
$sql = "SELECT `o`.`object_id` AS `ID`, `gP`.*, `gV`.*, `gT`.* FROM `objects` `o`
left outer join `gPeople` `gP` ON `o`.`object_id` = `gP`.`object_id`
left outer join `gVip` `gV` ON `o`.`object_id` = `gV`.`object_id`
left outer join `gTeachers` `gT` ON `o`.`object_id` = `gT`.`object_id`";
$result = mysql_query($sql);
while ($row = mysql_fetch_object($result)) {
$row->object_id = $row->ID;
unset($row->ID);
}
这导致:
object_id name vip_code subject
----------------------------------------------------------
001 Mary History
002 Holly 9002
003 John 9003 Math
而不是:
object_id name vip_code subject
----------------------------------------------------------
001 Mary History
Holly 9002
003 John 9003 Math
似乎因为表gSubject中没有object 002的object_id,所以它会用空值覆盖结果中的object_id
i、 e.对于第一个过程对象表上的对象002,它等于002,然后在第二个过程gPeople表上,它再次被002覆盖,然后在第三个过程gVip表上,它再次被002覆盖,然后在最后一个过程gTeachers表上,它被null覆盖,因为表中没有它的记录。引用:我已经尝试过左键joinsA更好的回应应该是发布一些code@Craig你能发布一些表格结构吗?如果可能,请使用SQL FIDLE。这里是SQL小提琴,但结果不是我得到的。我会在一秒钟内编辑帖子,以显示我得到的结果。