我循环通过用户页面上的反馈类型评论系统,找到最新的6个帖子.
要显示我想要的帖子,我必须从3个表中获取数据.
我认为如果它只是在一个查询中被拉出来的话,它会减少数据库密集度,但我不确定如何编写它,对JOIN和事情很糟糕.
这是我现有的代码
$sql_result = mysql_query("SELECT * FROM feedback WHERE user='1' ORDER BY date desc LIMIT 6", $db);
while($rs = mysql_fetch_array($sql_result)) {
$sql_result2 = mysql_query("SELECT * FROM members WHERE id= '$rs[author]'", $db);
$rs2 = mysql_fetch_array($sql_result2);
if ($rs2[clan] != 0) {
$sql_result3 = mysql_query("SELECT * FROM clans WHERE id= '$rs2[clan]' LIMIT 1", $db);
$rs3 = mysql_fetch_array($sql_result3);
// write comment
Run Code Online (Sandbox Code Playgroud)
有人能给我一个线索吗?
这应该这样做:
select * from feedback
left join members on feedback.author = members.id
left join clans on members.clan = clans.id
where feedback.user = 1
Run Code Online (Sandbox Code Playgroud)
left join表示如果右侧的表没有匹配的行,则返回包含所有空值的记录,因此您仍然可以从左侧的表中获取数据.