我有2张 table
页面
page_id post_id pid
3421 2345 1357
3421 4567 2468
3421 7891 1357
用户
pid fname lname
1357 john bravo
2468 ray mexy
使用以下语句
$result = mysql_query("SELECT usrs.*,pages.* FROM usrs INNER JOIN pages ON
usrs.pid = pages.pid WHERE pages.page_id = '$pageid'"); // $pageid = 3421
它以数组的形式给出了 page_id = 3421 的所有匹配项。
这样的东西会回显结果
while($row = mysql_fetch_array($result))
echo $row['post_id'] . " " . $row['fname'] . " " . $row['lname'];
o/p is 2345 john bravo
4567 ray mexy
7891 john bravo
现在真正的问题是,在这种情况下我还有另一个表可以处理
考虑表 3:total_likes
post_id pid
2345 3214
2345 4123
1245 4567
2345 2367
用户可以选择喜欢它,当用户点击喜欢按钮
时,他的pid
会与post_id
一起添加,现在我想要特定 post_id
的点赞数,即特定 post_id 的行数。
我希望输出是这样的
2345 john bravo 45 likes
4567 ray mexy 32 likes
1357 john bravo 20 likes
我不确定它是否可能,因为第三个表包含更多的 post_id 值。它就像一个指向数组 $row['post_id']
的值的数组。
最佳答案
您可以有一个额外的子查询,单独计算每个 post_id
的记录数。
SELECT a.*,
b.*
c.likes, c.IsExist
FROM pages a
INNER JOIN usrs b
ON a.pid = b.pid
LEFT JOIN
(
SELECT post_id,
COUNT(*) likes,
IF(SUM(pid = 1357) > 0, 'yes', 'no') IsExist
FROM total_likes
GROUP BY post_id
) c ON b.post_id = c.post_id
WHERE a.page_id = 3421
关于php - 包含 3 个表格,类似于 like 或 +1 的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764867/