php/mysql 标签查询模式

标签 php mysql join

我有一个 3 表标签系统,主题、标签和标签主题。

我现在想在显示主题时显示每个主题的各种标签。由于一个主题有多个标签,因此当我执行下面的查询时,我会得到多行,并且该主题显示多次,每行显示一次。我认为我不能使用 groupby,因为我没有对列进行任何数学运算。我真正想要的是对于每个主题,显示主题,然后显示帖子的标签列表,例如(对于 Siri),“iphone,智能手机,Siri”。 表:

topics
id | name |userid
tags
id | topicid | topicname
tagtopic
id | tagid | topicid '

$sql = "SELECT * FROM `topics` t
LEFT JOIN `tagtopic` tagtopic
on t.id = tagtopic.topicid
WHERE t.id= '12'";

应该提到显示是通过 while($row = mysql_fetch_array($res)) 完成的,以便显示记录集的行。我希望它显示主题一次,但由于为标签创建了多行,因此它显示多次。

我是否必须放弃连接并执行子查询?感谢您的任何建议。

最佳答案

你可以做GROUP_CONCAT这会将所有标签放入一个以逗号分隔的字段中。

SELECT GROUP_CONCAT(tt.tagid) FROM topics t
JOIN tagtopic tt ON tt.topicid = t.topicid
WHERE t.id=12
GROUP BY t.id

关于php/mysql 标签查询模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851569/

相关文章:

php - Android 允许将多个文件上传(最大 150 MB)到 PHP 服务器

php - magento 中的 cron 作业设置

php - 使用 php 过滤进行 SQL 注入(inject)

r - 在 R 中合并大数据集并标记不匹配的数据集

php - Internet Explorer 9 中的意外问题,假设它是由 html/css 引起的

php - 需要来自另一个 WordPress 插件的文件

php - MySQL:在 SELECT 中添加条件

mysql - 在字符串中搜索字符串的 SQL 查询(但字符串可能是分开的)

php - MySQL加入3个级联表

mysql - 逗号分隔的连接和MySQL中的语法连接有什么区别?