Mysql 将另一个具有多行的表连接到另一个表的单个结果

Mysql 将另一个具有多行的表连接到另一个表的单个结果,mysql,sql,Mysql,Sql,我当前在帖子中选择了一行: SELECT s.id AS id,s.date,s.title,s.views,s.image,s.width,s.description,u.id AS userId,u.username,u.display_name,u.avatar, (select count(*) from comments where item_id = s.id and type = 1) as numComments, (select count(*) from likes wh

我当前在帖子中选择了一行:

SELECT s.id AS id,s.date,s.title,s.views,s.image,s.width,s.description,u.id AS userId,u.username,u.display_name,u.avatar,
 (select count(*) from comments where item_id = s.id and type = 1) as numComments,
 (select count(*) from likes where item_id = s.id and type = 1) as numLikes,
 (select avg(value) from ratings where showcase_id = s.id) as average,
 (select count(*) from ratings where showcase_id = s.id) as total
FROM showcase AS s
INNER JOIN users AS u ON s.user_id = u.id
WHERE s.id = :id
LIMIT 5
然后在单独的查询中获取该帖子的评论:

SELECT c.id as c_id,c.text,c.date,u.id as u_id,u.username,u.display_name,u.avatar
FROM comments as c
INNER JOIN users as u ON c.user_id = u.id
WHERE item_id = :item_id AND type = :type

:id和:item_id相同。但是,注释返回多行,而第一个查询返回一行-是否有方法将注释连接到第一个查询,或者当前方法是否正确?

这取决于您的应用程序

如果我们讨论的是从中小型表返回的一些记录,并且如果查询一天只执行几次,那么如果:

使用两个记录集时,将执行两个不同的查询 然后把他们的结果放在一起

加入两个查询,从comments查询中复制每条记录的帖子信息

您可以使用注释构建一个XML,并将其连接到post记录的第一个查询中返回的记录

另一个需要考虑的因素是帖子和评论是否同时显示。如果情况并非如此,并且注释最初不可见,并且仅在单击按钮等操作后显示,那么出于性能原因,您应该选择上面的第一个选项

但是如果必须同时显示帖子信息和评论,那么您应该选择上面3个选项中的一个。在建模应用程序数据结构及其数据库访问层时,个人最喜欢哪一个

现在,如果数据量可能变得巨大,那么您应该深入挖掘并运行一些模拟,以找到能够提供最佳性能的查询