我刚刚开始学习SQL,需要帮助解决一个赋值问题。我被要求查看关于Kickstarter活动的数据集。我被要求找到前3类的支持者数量。
这是ER图:
在“竞选”表中,有“支持者”栏,但“类别”表仅通过“子类别”表与竞选活动相关。
到目前为止,我已经能够加入sub_category.category_id和sub-category.category_name,但我不知道如何使用这张新桌子,并加入它的竞选
SELECT C.name AS category_name, SC.category_id, SC.id AS SC_id
FROM Category AS C
JOIN sub_category AS SC ON C.id = SC.category_id我希望有一个表,其中有一个列“类别名称”和“支持者”,然后简单地按支持者的数量排序。
我该怎么做?我在正确的轨道上吗?
发布于 2022-01-25 21:38:59
SELECT C.name AS category_name, CA.backers
FROM campaign AS CA
JOIN sub_category AS SC
ON CA.sub_category_id =SC.Id
JOIN Category AS C 
ON C.id = SC.category_id
order by CA.backers您可以在一个查询中将多个连接放在一起。
其次,活动表和Sub_Category表之间有一个连接,这将有助于连接这两个表。
稍后,我们可以加入类别表,因为这两个表之间有一个基于Category_Id的连接,后者是子类别表中的外键。
最后,你可以根据支持者来订购。如果你在评论中有任何问题或疑问,请告诉我。
发布于 2022-01-25 22:29:10
为了获得Magnus的答案并可视化地重写,您可以更好地看到查询的层次结构。看看它是如何与表关系非常相似的。
SELECT 
      C.name category_name, 
      CA.backers
   FROM 
      campaign CA
         JOIN sub_category SC
            ON CA.sub_category_id = SC.Id
            JOIN Category C 
               ON SC.category_id = C.id
   order by 
      CA.backers注意表的缩进,它的ID是基于它之前的缩进。这样您就可以知道从连接到哪一列。我已经发现,如果您首先列出FROM子句中的表,以显示表是如何关联的,以及表中的主要键关系是什么,这是最困难的部分。然后再拉下你想要的柱子。
https://stackoverflow.com/questions/70854941
复制相似问题