我目前正在尝试制作一个小型网络服务,只是为了娱乐和学习。(我最近开始实际学习编程。该服务就像推特一样。用户关注他们的朋友并获取他们的状态。
我有一个关于关系数据库的问题。
有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并找到他朋友的用户ID、用户名、状态和创建(状态)。
我尝试了一些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'不存在"。
您的第一个连接语句具有"users",而表名为"user"。这是一个常见的新手错误。您应该选择标准并遵循它。我看到的大多数数据库都使用单数形式,因此不会混淆您的表名称是"朋友"还是"朋友"。
不过不用担心,我认为几乎每个人都在开始时犯这个错误。可能还有其他错误,但这个错误会立即弹出。
尝试修复它并让我们知道它是怎么回事。
哦,在表中选择声明我正在从哪个表中选择:即从用户中选择,...
这样的事情应该可以工作:
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 = @User2Id
就像评论中提到的:"应用程序用户"表不存在
在SQL Server中,用户是一个保留字,因此我们在其周围添加方括号。(请参阅代码)。或者您将表名称更改为其他名称(IE Client,TwitterUser等)