В запросе я получаю данные из трех таблиц: company
, classes_by_company
и person
. У меня есть внешний ключ во всех таблицах с именем company_id
. Я использую левое соединение для сетки таблиц с соответствующими company_id
. Я пытаюсь выяснить количество классов для компании и сотрудников. Я получаю значения, которые не подходят для обоих. Вот SQIDDLEЗапрос с использованием счета с использованием внешнего ключа
SELECT a.id,
a.company_id,
a.status,
COUNT(c.company_id) AS classes_per_company,
COUNT(p.employee_id) AS employees_per_company
FROM company a
LEFT JOIN classes_by_company c
ON a.company_id = c.company_id
LEFT JOIN person p
ON a.company_id = p.company_id
GROUP BY a.company_id
Структура таблицы:
CREATE TABLE company
(
id int auto_increment primary key,
company_id int,
status varchar(20)
);
CREATE TABLE classes_by_company
(
id int auto_increment primary key,
company_id int,
class_name varchar(20)
);
CREATE TABLE person
(
id int auto_increment primary key,
employee_id int,
company_id int,
person_name varchar(20)
);
* «классы для компании и сотрудников» * .. можете ли вы показать нам желаемый результат? – Kermit
@FreshPrinceOfSO о да! извините, я добавлю это сразу. – techAddict82