1

我对数据库很陌生,所以如果这听起来很愚蠢,我提前道歉。我正在创建一个模拟微博网站的基本 Web 应用程序。我有三张桌子authorsposts& comments

authors表描述如下:

aId int(20) NO  PRI NULL    auto_increment
aUser   varchar(30) NO  UNI NULL    
aPass   varchar(40) NO      NULL    
aEmail  varchar(30) NO  UNI NULL    
aBio    mediumtext  YES     NULL    
aReg    datetime    NO      NULL    

posts表描述如下:

pId int(20) NO  PRI NULL    auto_increment
pAuthor int(20) NO  MUL NULL    
pTitle  tinytext    NO      NULL    
pBody   mediumtext  NO      NULL    
pDate   datetime    NO      NULL    

我了解关系的基础知识,但我可以问一下,如果我想在我的 Web 应用程序上显示帖子并包括发布者,有没有办法这样做,所以结果集将显示实际的用户名,而不是数字ID ?每次创建帖子时,我都会捕获用户 ID,因此创建的每个帖子都是由有效的用户 ID 和帖子表记录创建它的人的用户 ID,但是在选择查询中查看帖子时,它会显示数字而不是作者表中与它们关联的名称。我们在那里有一个查询,我可以用来执行此操作或执行此操作的方式,因此当使用作者的 select * 时,它显示用户名而不是用户 ID。谢谢你们。

4

1 回答 1

1

我认为您正在寻找 SQL 查询:

SELECT pTitle, pDate, aUser 
FROM posts
LEFT JOIN authors ON aId=pAuthor
ORDER BY pDate DESC

SELECT您告诉 MySQL 您想查看哪些列之后,LEFT JOIN您将表连接在一起(按aIdpAuthor)并ORDER BY告诉 mysql 按从最新开始的日期排序给您pDate DESC(最高日期在前)

SELECT posts.*, authors.aUser 
FROM posts 
LEFT JOIN authors ON aId=pAuthor
WHERE pTitle LIKE "%news%"
ORDER BY pDate DESC, aUser ASC

在搜索标题包含“新闻”的帖子时查看作者的姓名,从最新帖子中排序,如果两个帖子具有相同的时间戳,则按用户名排序(亚当将排在 Zachariash 之前)

如果您不需要查看标题、日期和用户名以外的内容,请使用上面第一个查询的第一行

于 2013-03-17T23:06:28.447 回答