像关系数据库一样的推特



我目前正在尝试制作一个小型网络服务,只是为了娱乐和学习。(我最近开始实际学习编程。该服务就像推特一样。用户关注他们的朋友并获取他们的状态。

我有一个关于关系数据库的问题。

有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等)

最新更新