我目前正在尝试制作一个小型的web服务,只是为了好玩和学习。(我最近开始实际学习编程。)这项服务类似于twitter。用户关注他们的朋友并获取他们的状态。
我有一个关于关系型数据库的问题。
有3个表,分别是“用户”、“友谊”和“状态”。下面是描述这些表的代码。
create table user (
id int unsigned auto_increment primary key,
username varchar(16) not null,
password varchar(255) not null,
created datetime default null
);
create table friendship (
id int unsigned auto_increment primary key,
userid int not null,
friend int not null,
created datetime default null
);
create table status (
id int unsigned auto_increment primary key,
userid int not null,
current_status int not null,
created datetime default null
);'user.id‘等于'friendship.userid’和'status.userid‘。
·情况是这样的;
1,用户已登录,并将获得其朋友的状态编号。
2、php获得了用户的id,并找到了他的朋友的userid、username、status和created (of status)。
我尝试了一些sql语句,但不起作用。
有没有超级sql写入者可以给我展示正确的sql?
干杯!
编辑1;
我尝试过这样的sql语句;
select userid, username, current_status, created
from status
join users u1
on u1.id = status.userid
join friendship
on friendship.friend = u1.id
join user u2
on u2.id =friendship.userid
where u2.id = "the user's id from php";然后mysql抛出这个"#1146 -表'Application.user‘不存在“。
发布于 2012-05-09 03:50:48
这是一个常见的新手错误。你应该选择标准并遵循它。我看到的大多数DB都使用单数形式,因此不会混淆您的表名是"friends“还是”friend“。
试着修复它,并让我们知道它的进展。
哦,在表中选择声明我从哪个表中进行选择:即SELECT from user.userid,…
发布于 2012-05-09 04:20:36
像这样的东西应该是有效的:
select u1.userid, username, current_status, created
from status
inner join [user] u1 on u1.id = status.userid
inner join friendship on friendship.friend = u1.id
inner join [user] u2 on u2.id = friendship.userid
where u2.id = @User2IdLike在评论中提到:表'Application.user‘不存在
在SQL Server中,user是保留字,所以我们在它两边加上方括号。(请参阅代码)。或者将表名改为其他名称(IE客户端、TwitterUser等)
https://stackoverflow.com/questions/10504439
复制相似问题