连接mysql中的表,但其中一个表不可访问

连接mysql中的表,但其中一个表不可访问,mysql,Mysql,我编写了一个连接3个表的查询: SELECT `notification`.`nid`, `notification`.`type`, `notification`.`read`, `notification`.`time`, `user`.`pro_img`, `user`.`fname` ,`user`.`lname`, `user`.`username`, `accommodation`.`aid`, `accommodation`.`title`, `accommodation`.`ho

我编写了一个连接3个表的查询:

SELECT `notification`.`nid`, `notification`.`type`, `notification`.`read`, `notification`.`time`, `user`.`pro_img`, `user`.`fname` ,`user`.`lname`, `user`.`username`, `accommodation`.`aid`, `accommodation`.`title`, `accommodation`.`home_img`
 FROM `notification` RIGHT OUTER JOIN `user` ON `notification`.`rid`=`user`.`id` RIGHT OUTER JOIN `accommodation` ON `notification`.`acco_id`=`accommodation`.`aid`
 WHERE `notification`.`uid`=$uid ORDER BY `notification`.`time` DESC;

我希望在
通知
帐户id
=
住宿
辅助
未找到时得到结果,因此空列是可以的,但我需要行

您的查询合并了一些不符合要求的内容。您正在使用的
右连接将保留右侧表中的任何内容,在您的情况下
user
acomodation
,但将其中两个连接使用在同一左侧将使其无效。您的
中也有一个条件,其中
涉及
连接的左侧
,这也会使
右侧连接变得毫无意义

假设您想要所有的
通知
,不管它们是否与
用户
住宿
匹配,您只需要从
右侧
更改为
左侧连接

SELECT  notification.nid,
        notification.type,
        notification.read,
        notification.time,
        user.pro_img,
        user.fname,
        user.lname,
        user.username,
        accommodation.aid,
        accommodation.title,
        accommodation.home_img
FROM    notification
LEFT OUTER JOIN
        user
ON      notification.rid = user.id
LEFT OUTER JOIN
        accommodation
ON      notification.acco_id = accommodation.aid
WHERE   notification.uid = $uid
ORDER BY notification.time DESC

这将保留
通知
中的所有行,并在其他表上没有匹配行时将它们与
null
值匹配。

Hi,您的数据库结构?