如何减少php/mysql数组选择循环中的查询

如何减少php/mysql数组选择循环中的查询,php,mysql,Php,Mysql,我需要在我的php/mysql项目中显示故事细节和标签名称 对于每个故事行,都有一个名为:tags的字段,它将tags id保存为数组 表名:故事 表格字段:标记 已归档的标签示例: 1 5 6 他们之间的距离 我有一张像这样的标签表 表名:bt_标签 表格文件:tid,标签 现在的问题是: 当使用while循环获取故事表中的所有字段时,页面使用1个查询来显示每个故事的详细信息,但是为了显示标记的名称,我应该查询另一个表来查找名称,我们在故事表中存储了ID 现在我使用while循环之间的循环来显

我需要在我的php/mysql项目中显示故事细节和标签名称

对于每个故事行,都有一个名为:tags的字段,它将tags id保存为数组

表名:故事

表格字段:标记

已归档的标签示例:

1 5 6 他们之间的距离

我有一张像这样的标签表

表名:bt_标签

表格文件:tid,标签

现在的问题是:

当使用while循环获取故事表中的所有字段时,页面使用1个查询来显示每个故事的详细信息,但是为了显示标记的名称,我应该查询另一个表来查找名称,我们在故事表中存储了ID

现在我使用while循环之间的循环来显示标记名,但我确信有更好的方法来减少页面查询

允许更改数据库表中的任何内容


如何在不使用**for循环的情况下改进此脚本并显示标记的名称?***

听起来加入可能会对您有所帮助

select s.*,
  b.tag,
  b.slug
from story_table s
  left join bt_tags b on b.tid in s.tags

在dev.mysql.com

如果不允许您更改数据库表,我不确定我们在这里能做多少。这太棒了,兄弟!;-)我不知道为什么我不能将其设置为工作状态,实际上,存储在stories表中的标记ID按空格分隔,而不是逗号,以及如何显示标记名数组?只是$row['tag']?plz帮助完成此脚本示例查询是简写的;你需要换些东西。代替
s.tags
你可以使用
$tags\u id
变量你介意更新你的答案吗,我想举个例子,我能更好地理解它。很好的一个例子,但我没有成功地使它工作,我如何在查询后显示标记名数组,从而更改
group\u concat(tags.tagname)
将(tags.tagname)分组为mytags
,将
mytags
替换为您想要的任何内容,您应该能够像
$row['mytags']一样引用它。
SELECT stories.storyid,
       stories.storyname, 
       group_concat( tags.tagname ) 
  FROM stories, tags
 WHERE CONCAT( ' ', stories.tags, ' ' ) LIKE CONCAT( '%', tags.tagid, '%' ) 
 GROUP BY stories.storyid, stories.storyname