Mysql 每个项目的附加查询?
我有一个很长的项目列表。即:Mysql 每个项目的附加查询?,mysql,database-design,data-structures,Mysql,Database Design,Data Structures,我有一个很长的项目列表。即: $query = mysql_query("SELECT i.id ORDER by i.id DESC LIMIT 0, 200"); while($row = mysql_fetch_array($query)){ $num_row++; } 产出: [项目1][项目2][项目3]。。。[项目200] 事情是这样的。我需要检查每个项目用户是否喜欢该项目。我是否必须为第一个项目查询的每一行启动附加查询?我们正在讨论200个查询。。。是否
$query = mysql_query("SELECT i.id
ORDER by i.id DESC LIMIT 0, 200");
while($row = mysql_fetch_array($query)){ $num_row++;
}
产出:
[项目1][项目2][项目3]。。。[项目200]
事情是这样的。我需要检查每个项目用户是否喜欢该项目。我是否必须为第一个项目查询的每一行启动附加查询?我们正在讨论200个查询。。。是否需要将此查询加入第一个查询
我正在考虑将“like”表的结构设置为:
id, item_ref, user_id
----------------------
1, 1, 5
1, 5, 5
1, 3, 5
当以用户id 5登录时,应显示:
[第1项喜欢][第2项][第3项喜欢][第4项][第5项喜欢]。。。[项目200]
有什么建议吗
非常感谢 您可以加入like表,并使用该表查看特定用户是否有like。您遗漏了一点查询,但类似于(假设您使用您提到的like表):
like
结果中的like是给定用户是否有like。这似乎很有效!顺便说一句,$row['liked']为真时给我一个“1”,为假时给我一个“0”,对吗?@James-Yep,对。MySQL认为零为假,非零为真。PHP将正确处理这些问题。
SELECT i.id, l.id IS NOT NULL AS liked
FROM item i
LEFT JOIN likes l ON (i.id = l.item_ref AND l.user_id = YOURUSERIDHERE)
ORDER by i.id DESC LIMIT 0, 200