Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir des données à partir de 4 tables dans 1 requête sql ?

Avec cette requête, vous obtenez ce que vous voulez :

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

J'ai utilisé left join sur les subscribers car il se peut qu'il n'y ait personne pour un course donné . Je suppose que toutes les autres tables contiennent des données pour chaque course , categorie et tutor . Sinon, vous pouvez utiliser left join aussi bien mais alors vous aurez des données avec null.