我已经建立了小型论坛脚本
在我的索引页面中我正在使用
$query = mysql_query("SELECT * FROM threads");
while($threads = mysql_fetch_array($query)){
echo 'Thread title ' . $threads['thread_title'];
echo '<br />Thread content ' . $threads['thread'];
}
打印完整的网站帖子!
现在我希望在标题
下显示帖子类别和帖子标签我如何获得帖子的类别和标签?
我有表格包含此信息
表名 - &gt;关系
列
POST_ID | CATEGORY_NAME
我想加入此表并获取每个帖子的category_name!
那么什么是正确的查询?
注意:我的网站数据库很大..所以我想要快速查询
非常感谢
答案 0 :(得分:1)
您应该为要查看的数据发布它们包含的表和字段列表。
但是一般的想法应该是这样的(假设线程表在post_id到关系表的post_id上有一个外键):
SELECT t.*, r.category_name FROM threads as t
INNER JOIN relations as r on t.thread_id = r.thread_id
刚刚根据您刚刚列出的字段更新了上述查询。
仅供参考:如果您担心性能,您应该在数据库查询中连接数据,如上所示,对初始数据集中的每一行执行其他查询将生成额外的调用*线程数。现在多次查看该页面的用户数量和数据库上的负载呈指数级增长,并且不必要地增长。所有这些都可以在一个数据库查询中完成,这样每个用户只会在数据库中触发一个查询,而不是每个页面的数百或数千个查询。
好的,在这种情况下尝试这样的事情:
SELECT t.*, GROUP_CONCAT(r.category_name ORDER BY r.category_name SEPARATOR " ") as category_name
FROM threads as t
INNER JOIN relations as r on t.thread_id = r.thread_id
GROUP BY r.thread_id;