我的mysql数据库中有三个表用户,朋友和新闻源,名为" test"。 这些表中的值是
users table values...
id | username | password
-------------------------------------
1 | user1 | pass1
-------------------------------------
2 | user2 | pass2
-------------------------------------
3 | user3 | pass3
friends table values
id | friend_from | friend_to | status
--------------------------------------------------------
1 | user1 | user2 | 1
--------------------------------------------------------
2 | user2 | user3 | 1
--------------------------------------------------------
3 | user3 | user1 | 1
newsfeed table values
id | username | post
----------------------------------
1 | user1 | post1
----------------------------------
2 | user2 | post2
----------------------------------
3 | user3 | post3
现在我想从newsfeed table获取user1的朋友的所有数据。因为我写了如下查询
SELECT * FROM newsfeed WHERE friends.friend_from=newsfeed.username AND friends.friend_to='user1' AND friends.status=1 OR friends.friend_from='user1'AND friends.friend_to=newsfeed.username AND friends.status=1
现在我期待结果如下
user2 post2
user3 post3
但我得到以下结果......
#1054 - Unknown column 'friends.friend_from' in 'where clause'
是什么原因......
答案 0 :(得分:1)
正如您所知,您的SQL不知道friends
是什么,您需要将其包含在您选择的表列表中:
SELECT * FROM newsfeed,friends WHERE friends.friend_from=newsfeed.username AND friends.friend_to='user1' AND friends.status=1 OR friends.friend_from='user1' AND friends.friend_to=newsfeed.username AND friends.status=1
您还可以为表分配简写名称,以便更容易在SQL的其他位置引用,如下所示:
SELECT * FROM newsfeed n,friends f WHERE f.friend_from=n.username AND f.friend_to='user1' AND f.status=1 OR f.friend_from='user1' AND f.friend_to=n.username AND f.status=1