SQL nest为一篇博客文章选择多个标签

时间:2018-11-02 03:37:46

标签: php sql

我在数据库中有3个表,用于我正在处理的博客,帖子,用户和分类法(标签和内容)。如果我限制1,我的SQL会正确返回并正确排列数组,但是我无法获取所有附带的标记。

是否可以进行某种形式的嵌套以将标记作为数组获得,以便我可以遍历它们并将它们添加到一个查询中的帖子中?

我看过的帖子没有解决方法。

需要的结果

{postname:"post", author:"this author",content:"stuff here", {tags: "a","b","c"}}

香港专业教育学院尝试了什么

$stmt = $this->conn->prepare("
 SELECT P.post_title,P.post_featimg, P.post_excerpt, P.post_quote,
 P.post_content, P.post_date, P.post_position, 
 U.user_firstname, U.user_lastname,
 T.taxonomy_tag        
 FROM c_blogposts P
 JOIN c_users U
 ON P.post_author and U.id
 JOIN c_taxonomy T
 ON P.post_id and T.post_id
 WHERE P.post_id = :post_id");
 $stmt->bindParam(':post_id', $id);

以这个小提琴为例将更加容易。谢谢

{{3}}

1 个答案:

答案 0 :(得分:3)

您需要使用group_concat,这也可以自定义分隔符,例如逗号或您希望使用分隔符语法的任何东西,默认值是逗号。

SELECT P.content, A.author, group_concat(T.tag)
FROM c_post P
JOIN c_author A
ON P.id and A.id
JOIN c_tags T
ON T.id and P.id
WHERE P.id = 1
group by P.content, A.author