Задание 3 КЕГЭ: реляционная база — как делать выборку по нескольким таблицам?
Третье задание теперь про реляционные БД: дают две-три связанные таблицы (например, «Фирмы», «Поставки», «Товары») и условие вроде «на какую сумму фирма X поставила товаров категории Y». Считать руками по таблицам муторно. Можно ли как-то систематизировать?
3 ответа
На самом экзамене таблицы дают файлами, и удобнее не SQL, а пройтись по строкам кодом, связывая по ключам.
# таблицы как списки словарей (после чтения из файла)
# идея: связь по общему ID
firms = {row['id']: row for row in firms_rows}
total = 0
for supply in supplies_rows:
if firms[supply['firm_id']]['name'] == 'Заря':
total += int(supply['amount'])
print(total)
Ключевая мысль задания 3 — понять, какое поле в одной таблице ссылается на ключ другой (внешний ключ → первичный), и «склеить» строки по нему. Дальше это просто фильтр и сумма. Если таблицы маленькие, многие решают даже вручную, выписав связи, но через словарь по id ошибиться почти невозможно.
Свяжи таблицы по общему полю (внешний ключ ссылается на первичный), потом фильтр + сумма.
Можно и через pandas merge, но на экзамене обычно проще словарём по id, без лишних библиотек.