MySQL查询根据引用其他表的位置从表中计数

标签 mysql sql

SELECT s.id, u.name, de.name,
SUM(dp.destination_id = 1 AND l.liked = 1) AS tokyo_count,
SUM(dp.destination_id = 2 AND l.liked = 1) AS osaka_count,
SUM(dp.destination_id = 3 AND l.liked = 1) AS hokkaido_count
FROM `t0120_swipe_set` s, `t0121_swipe_log` l, `t0111_destination_photo` dp, `t0110_destination` d,`t0101_user` u, 
`t0110_destination` de
    WHERE s.id = 8
        AND s.id = l.set_id
            AND l.destination_photo_id = dp.id
                AND dp.destination_id = d.id
                    AND s.user_id = u.id
                        AND s.suggested_destination_id = de.id;

t0110_destination
    id
    name
    swipe_count

t0111_destination_photo
    id
    destination_id

t0120_swipe_set
    id
    user_id
    suggested_destination_id

t0121_swipe_log
    set_id
    user_id
    destination_photo_id
    liked

这些是我的查询和表结构, 我想要得到的是每个滑动组在每个目的地的点赞总数。 这个查询是可执行的,但是,它总是只返回一条记录。 比方说,我想从所有滑动集中选择,而不是 s.id = 8。

附言。我试过 IN,但是 SUM 搞砸了,而且它也只在行上返回。

我能解决这个问题吗? 谢谢

最佳答案

SELECT s.id, u.name, de.name,
SUM(dp.destination_id = 1 AND l.liked = 1) AS tokyo_count,
SUM(dp.destination_id = 2 AND l.liked = 1) AS osaka_count,
SUM(dp.destination_id = 3 AND l.liked = 1) AS hokkaido_count
FROM `t0120_swipe_set` s
INNER JOIN `t0121_swipe_log` l ON s.id = l.set_id
INNER JOIN `t0111_destination_photo` dp ON l.destination_photo_id = dp.id
INNER JOIN `t0110_destination` d ON dp.destination_id = d.id
INNER JOIN `t0101_user` u ON s.user_id = u.id
INNER JOIN `t0110_destination` de ON s.suggested_destination_id = de.id
GROUP BY S.ID

刚刚尝试了上面的代码。 希望这会有所帮助。

关于MySQL查询根据引用其他表的位置从表中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571155/

相关文章:

MySQL 选择帮助;子查询?

c++ - MySql connector-c++ 不会在 QtCreator 中链接,但在树莓派 pi3 上本地工作正常

mysql查询返回 "0 rows inserted"

sql - 如何按列的一部分排序?

php - 从数据库中删除特定图像[简单php/mySql]

SQL Server - 从临时表复制数据

mysql - INPUT INTO 错误 - 初学者 MYSQL 语法问题

sql - Oracle 日期格式 - 奇怪的行为

sql - 将 Rails SQL 输出转换为有效的 psql 语句

sql - 无法在预建表上重新创建物化 View