Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 多表查询-获取好友更新_Facebook_Multi Table - Fatal编程技术网

Facebook 多表查询-获取好友更新

Facebook 多表查询-获取好友更新,facebook,multi-table,Facebook,Multi Table,建立一个类似facebook的墙,想要从朋友那里获取消息(更新) 上面的查询返回一个空集,即使我已经确定表中有来自用户5的消息 模式: SELECT M.msg_id, M.uid_fk, M.message, M.created, U.fname, U.lname, M.uploads FROM messages M, users_friends F, users U WHERE M.uid_fk=F.friendID and F.userID = '5' and status='2

建立一个类似facebook的墙,想要从朋友那里获取消息(更新)

上面的查询返回一个空集,即使我已经确定表中有来自用户5的消息

模式:

SELECT M.msg_id, M.uid_fk, M.message, M.created, 
U.fname, U.lname, M.uploads 
FROM messages M, users_friends F, users U  
WHERE M.uid_fk=F.friendID 
and F.userID = '5'
and status='2'

您在WHERE子句中引用INT值→ '五号和二号

另外,尝试连接

CREATE TABLE IF NOT EXISTS `messages` (
  `msg_id` int(11) NOT NULL AUTO_INCREMENT,
  `message` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  `uid_fk` int(11) DEFAULT NULL,
  `ip` varchar(30) DEFAULT NULL,
  `created` int(11) DEFAULT '1269249260',
  `uploads` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`msg_id`),
  KEY `uid_fk` (`uid_fk`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=263 ;


CREATE TABLE IF NOT EXISTS `users` (
  `fname` varchar(15) NOT NULL,
  `lname` varchar(15) NOT NULL,
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(23) NOT NULL,
  `email` varchar(50) NOT NULL,
  `password` varchar(32) NOT NULL,
  `DOB` date DEFAULT NULL,
  `sex` varchar(1) DEFAULT NULL,
  `about` text NOT NULL,
  `location` varchar(20) DEFAULT NULL,
  `last_login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_level` int(11) NOT NULL DEFAULT '0',
  `profile_image` varchar(200) NOT NULL,
  `profile_image_small` varchar(200) NOT NULL,
  PRIMARY KEY (`userID`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;


CREATE TABLE IF NOT EXISTS `users_friends` (
  `userID` int(11) NOT NULL,
  `friendID` int(11) NOT NULL,
  `status` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`userID`,`friendID`),
  KEY `fk_users_has_friends_users1` (`userID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解正确的语法,以便在第9Nevermind行中使用“内部连接用户\u friends F ON F.friendsid=M.uid\u fk和F.userID=5 AN”,您只需在不应该存在的内部连接之前留下一个逗号。它起作用了@BrianByrne是的,是M之后的一个额外的逗号。
SELECT  M.msg_id, 
        M.uid_fk, 
        M.message, 
        M.created, 
        U.fname, 
        U.lname, 
        M.uploads 
FROM    messages M
INNER JOIN  users_friends F ON F.friendID = M.uid_fk
    AND F.userID = 5
    AND F.status = 2
INNER JOIN  users U ON U.userID = F.friendID;