mysql - 连接表问题

标签 mysql

我有 3 张 table 想要加入:

pictures
--------
id   user_id    link

users
-----
id    name

votes
-----
id    user_id    picture_id

我想要做的是找到登录的特定用户的每张图片的总投票数。几乎我循环每张图片,如果用户对图片投票,他们就不能再次投票。

Desired output:
---------------

id    user_id    link    user_name    total_votes
1     5          [link]  Sean         5

到目前为止我有这样的事情:

SELECT 
p.*, u.username, d.total_votes
FROM pictures p 
LEFT JOIN users u 
ON p.user_id = u.id
LEFT JOIN
(
select id, picture_id, count(id) as has_voted from votes
) d on d.picture_id = p.id

我得到了所有图片,但所有投票都被添加到第一个记录中。

编辑

抱歉,说得不清楚

enter image description here

这就是我数据库中的每张图像。假设我以 Sean (user_id 1) 身份登录,我想显示我对每个图像投票的次数。

user_id 是上传图片的人。

最佳答案

(更新)尝试:

Select p.id, p.user_id, p.link, u.name, count(v.id) As total_votes
from pictures p 
join users u on p.user_id = u.id
left join votes v on p.id = v.picture_id and v.user_id = ?
group by p.id

关于mysql - 连接表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498623/

相关文章:

mysql - 将巨大的 MySQL 转储文件恢复到 MS SQL Server 2008

mysql - 从日志表中选择最后一个操作

mysql - 连接单独的数据库时使用的连接变量?

php - 如何在单个 MySQL 语句中使用 GROUP_CONCAT 和 UNION

mysql - 谷歌大查询中行之间的时间差异

mysql - 如何在mysql中设置计数器?

PHP 解析 .txt

php - MySQL - 如何在多列html表中显示,mysql表的单列

mysql - 对 SET 类型的 MYSQL 列运行 SQL SELECT 语句

php - 无法连接到数据库 "Fatal error: Call to undefind function mysqli_connect()"