如何在1个sql查询中从4个表中获取数据?

问题描述 投票:0回答:3

我有以下数据库架构:

table courses:
id
tutor_id
title



table course_categories:
    id
    category_id
    course_id

table categories:
    id
    name

table tutors:
    id
    name

table subscribers:
    id
    course_id
    user_id

我需要创建 1 个 sql 来获取包含所有类别的课程、该课程的导师以及该课程的订阅者数量。这可以在 1 个查询中完成吗?这应该使用存储过程来完成吗?

mysql sql query-performance
3个回答
5
投票

通过此查询,您将得到您想要的:

select co.title as course,
       ca.name as category,
       t.name as tutor,
       count(s.*) as total_subscribers
from courses co
inner join course_categories cc on c.id = cc.course_id
inner join categories ca on cc.category_id = ca.id
inner join tutors t on co.tutor_id = t.tutor_id
left join subscribers s on co.id = s.course_id
where co.title = 'Cat1'
group by co.title, ca.name, t.name

我在

left join
上使用
subscribers
,因为给定的
course
可能没有人。我假设所有其他表都有每个
course
categorie
tutor
的数据。如果没有,您也可以使用
left join
,但随后您将获得 null 数据。


1
投票

这是可以做到的。您需要查找

select
以及
join
的用法。请参阅 selectjoin 来帮助完成作业


0
投票
SELECT cou.title, cat.name, tu.name, COUNT(sub.user_id) 
FROM courses cou, course_categories cca, categories cat, tutors tu, subscribers sub 
WHERE cou.id = cca.id and cat.id = tu.id AND tu.id = sub.id 
GROUP BY cou.title, tu.name;
© www.soinside.com 2019 - 2024. All rights reserved.