Как получить данные из 4 таблиц в 1 sql запросе? - PullRequest
1 голос
/ 10 февраля 2012

У меня есть следующая схема базы данных:

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 запрос? Должно ли это быть сделано с использованием хранимых процедур?

Ответы [ 3 ]

5 голосов
/ 10 февраля 2012

С помощью этого запроса вы получите то, что вы хотите:

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, но тогда у вас будут данные с нулем.

1 голос
/ 10 февраля 2012

Это можно сделать. Вам нужно поискать select и использовать join. См. выберите и присоединиться , чтобы помочь завершить назначение

0 голосов
/ 18 февраля 2018

выберите cou.title, cat.name, tu.name, count (sub.user_id) из курсов cou, course_categories cca, категорий cat, tutor tu, подписчиков sub, где cou.id = cca.id и cat.id =tu.id и tu.id = группа sub.id по cou.title, tu.name;

...