5. Вывести имена работников и их начисления
Условие задачи:
Даны две таблицы со связью один-ко-многим:
Persons— работники;Payments— ежемесячные начисления работников.
Необходимо написать SQL-запрос, который выводит имя работника и сумму каждого его начисления.
Код:
Persons
id | name
---|------
1 | Petya
2 | Vasya
3 | Kolya
Payments
id | persons_id | value
---|------------|------
1 | 1 | 10
2 | 1 | 20
3 | 3 | 15
Спойлеры к решению
Подсказки
💡 Таблицы связаны через
💡 Для объединения данных используй
💡 Из
Persons.id = Payments.persons_id.💡 Для объединения данных используй
JOIN.💡 Из
Persons нужно получить name, а из Payments — value.Решение
SELECT
p.name,
pay.value
FROM Persons p
JOIN Payments pay
ON pay.persons_id = p.id;
JOIN связывает каждое начисление с соответствующим работником.
Результат:
name | value
------|------
Petya | 10
Petya | 20
Kolya | 15
Vasya в результат не попадёт, поскольку у него нет записей в таблице Payments.
Если необходимо вывести также работников без начислений, вместо JOIN следует использовать LEFT JOIN.