我只想问最佳实践
我猜有三张桌子。帖子,类别,post_Categories。一个帖子可以有一个或多个类别发布
post_id post_title post_body
1 title 1 body1
2 title 2 body2
分类
cat_id cat_name
1 C#
2 Java
3 PHP
posts_categories
pc_id pc_post pc_cat
1 1 1
2 1 2
3 1 3
4 2 2
5 2 3
我想显示所有帖子及其分类。我可以显示这样的帖子列表
title 1
body1
category(C#, Java, PHP)
-----------
title 2
body2
category(Java, PHP)
所以我必须创建这样的查询。
SELECT post_id, post_title, post_body, cat_id, cat_name
FROM posts p INNER JOIN post_categories pc ON p.post_id = pc.pc_post
INNER JOIN categories c ON c.cat_id = pc.cat_id
the result is
1 title 1 body1 1 C#
1 title 1 body1 2 Java
1 title 1 body1 3 PHP
2 title 2 body2 2 Java
2 title 2 body2 3 PHP
之后,我必须循环帖子,并检查title1是否仍然有任何类别。如果有,我必须把它变成一些变量。如果不 我继续检查title2的类别并将其临时变为某个变量
毕竟,我显示所有帖子及其类别。
有没有比我的代码更好的做法
答案 0 :(得分:2)
您可以使用GROUP BY post_id
并在选择列表中添加GROUP_CONCAT(cat_name SEPARATOR ', ') AS categories
,但前提是您不想使用类别ID,例如让他们联系。
答案 1 :(得分:0)
你正在做的是良好的做法。
您可以通过删除posts_categories
表来简化,只需将cat_id字段添加到Post表中。