我对数据库很陌生,所以如果这听起来很傻,我会事先道歉。我正在创建一个模拟微博客网站的基本Web应用程序。我有三张表authors
,posts
& 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
我理解关系的基础知识,但我可以问,如果在我的网络应用程序上我想要显示帖子并包括发布它们的人,有没有办法这样做,所以结果集将显示实际的用户名,而不是比数字ID?每次创建帖子时我都会捕获用户ID,因此创建的每个帖子都是有效的用户ID,而post表记录了创建帖子的用户ID,但是当在select查询中查看帖子时,它会显示数字而不是在authors表中与它们相关联的名称。我们可以使用一个查询来执行此操作或执行此操作,因此当使用select * from authors时,它会显示用户名而不是用户ID。 谢谢你们。
答案 0 :(得分:1)
我认为您正在寻找SQL查询:
SELECT pTitle, pDate, aUser
FROM posts
LEFT JOIN authors ON aId=pAuthor
ORDER BY pDate DESC
在SELECT
之后,您告诉MySQL您要查看哪些列,使用LEFT JOIN
将表格连接在一起(aId
和pAuthor
)和{ {1}}你告诉mysql从最新的ORDER BY
开始按日期排序(最高日期优先)
pDate DESC
在搜索包含“新闻”标题的帖子时查看作者的姓名,其中包含从最新帖子中排序的“新闻”,如果两个帖子具有相同的时间戳,则按用户名称显示它们(Adam将在Zachariash之前进行)
如果您不需要查看标题,日期和用户名称以外的内容,请使用上面第一个查询中的第一行