连接mysql中的表,但其中一个表不可访问
我编写了一个连接3个表的查询:连接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
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,您的数据库结构?