我在数据库中有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}}
答案 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