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

时间:2010-05-26 14:02:34

标签: php mysql

我需要在php / mysql项目中显示故事详情和标签名称。

对于每个故事行,都有一个名为的标签:将标签id保存为数组的标签

  

表名:故事

     

表格提交:标记

提交的标签示例:

  

1 5 6   他们之间的空间

我有一个看起来像这样的标签表

  

表名: bt_tags

     

表格文件: tid,标记

现在问题:

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

现在我用while循环显示标签名称,但我确定有更好的方法来减少页面查询

llowed改变数据库表中的任何内容

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

2 个答案:

答案 0 :(得分:4)

听起来像加入可能会帮助你

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

Join Syntax

答案 1 :(得分:4)

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