Pepelen
Тестирование ПО: профессия QA с нуля

Lesson

Урок 2. COUNT и простой JOIN: посчитать и связать таблицы

Считать строки агрегатом COUNT и связывать две таблицы простым JOIN для проверки данных.

1 / 6

COUNT и JOIN: считаем и связываем

Агрегат COUNT и простой JOIN

Тестировщику часто нужно не просто посмотреть строки, а убедиться в их количестве. Например: «После импорта в БД должно быть ровно 50 новых заказов». Для этого служит агрегат COUNT. Запрос SELECT COUNT(*) FROM orders вернёт одно число — сколько строк в таблице orders. Можно добавить фильтр: SELECT COUNT(*) FROM orders WHERE status = 'paid' — и вы узнаете количество оплаченных заказов. Но данные часто живут в разных таблицах. Пусть есть таблица users (id, name) и таблица orders (id, user_id, total). Поле orders.user_id ссылается на users.id — это ключ связи. Чтобы увидеть, кому принадлежит каждый заказ, пишем JOIN: SELECT users.name, orders.total FROM orders JOIN users ON orders.user_id = users.id. Условие ON orders.user_id = users.id — обязательная часть. Без него СУБД объединит каждую строку orders с каждой строкой users (декартово произведение), и результат будет бессмысленным. Зачем это тестировщику? Например, проверить: заказ с id=5 действительно привязан к пользователю 'Анна', а не к другому. Или убедиться, что у каждого заказа есть соответствующий пользователь (если нет — нарушение целостности данных, дефект). Типичная ошибка новичка — написать JOIN и забыть условие ON. В результате вместо ожидаемых, например, 3 строк запрос вернёт 9 (3 заказа × 3 пользователя), что сразу сигнализирует о проблеме.
Lesson notes
Агрегат COUNT и простой JOIN
Тестировщику часто нужно не просто посмотреть строки, а убедиться в их количестве. Например: «После импорта в БД должно быть ровно 50 новых заказов». Для этого служит агрегат COUNT. Запрос SELECT COUNT(*) FROM orders вернёт одно число — сколько строк в таблице orders. Можно добавить фильтр: SELECT COUNT(*) FROM orders WHERE status = 'paid' — и вы узнаете количество оплаченных заказов. Но данные часто живут в разных таблицах. Пусть есть таблица users (id, name) и таблица orders (id, user_id, total). Поле orders.user_id ссылается на users.id — это ключ связи. Чтобы увидеть, кому принадлежит каждый заказ, пишем JOIN: SELECT users.name, orders.total FROM orders JOIN users ON orders.user_id = users.id. Условие ON orders.user_id = users.id — обязательная часть. Без него СУБД объединит каждую строку orders с каждой строкой users (декартово произведение), и результат будет бессмысленным. Зачем это тестировщику? Например, проверить: заказ с id=5 действительно привязан к пользователю 'Анна', а не к другому. Или убедиться, что у каждого заказа есть соответствующий пользователь (если нет — нарушение целостности данных, дефект). Типичная ошибка новичка — написать JOIN и забыть условие ON. В результате вместо ожидаемых, например, 3 строк запрос вернёт 9 (3 заказа × 3 пользователя), что сразу сигнализирует о проблеме.
Урок 2. COUNT и простой JOIN: посчитать и связать таблицы — Тестирование ПО: профессия QA с нуля