【问题标题】:SQL: Finding totals from a joined tableSQL:从连接表中查找总计
【发布时间】:2014-10-15 01:00:42
【问题描述】:

好的,我在 MySQL 中有两个表,photosviews。每次查看照片时,都会在 views 中创建一个新行。

我希望 SQL 返回一个照片列表,其中包含每张照片的总查看次数。

我一直在尝试这个查询,但结果只给了我 1 张照片。

select photos.id, photos.loc, count(views.id) as views
from photos
left outer join views on views.id=photos.id

有人可以向我解释我做错了什么吗?

谢谢。

【问题讨论】:

  • 我很惊讶您不需要GROUP BY... 而且您的查询正在给出结果。

标签: mysql sql


【解决方案1】:

您需要count查看视图和group by照片:

SELECT          photos.id, photos.loc, COUNT(*) AS total_views
FROM            photos
LEFT OUTER JOIN views ON views.id = photos.id
GROUP BY        photos.id, photos.loc

【讨论】:

  • 我不确定 alias-name = table-name (views) 是否是个好主意。
  • @JA 从 OP 复制粘贴 - 但你是对的,将其修复为不那么模棱两可的东西。
【解决方案2】:

应该是这样的

SELECT
    photos.id,
    photos.loc,
    count(views.id) as viewCount
FROM
    photos,
    LEFT JOIN views ON views.id = photos.id  (Not sure if it should be views.id or views.pid or something)
GROUP BY
    photos.id

【讨论】:

    【解决方案3】:
    SELECT photos.id,photos.loc,count(views.id) as views
    FROM photos
    LEFT JOIN  views 
    ON
    views.id=photos.id
    GROUP BY GROUPING SETS(photos.id,photos.loc),())
    

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2020-04-27
      • 2018-05-09
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多