SQL для QA: JOIN, NULL и неожиданные дубликаты
Как проверить данные по нескольким таблицам и не потерять записи без связи.
test('the next big thing',
async ({ page }) => {
await expect(page)
.toHaveTitle('QA Orbit');
});Учебная модель
Предположим, есть таблицы users и collections. Один пользователь может иметь несколько коллекций, а новый пользователь ещё не создал ни одной. Задача — получить пользователей вместе с числом коллекций, включая ноль.
Выберите соединение
INNER JOIN оставит только пользователей со связанной строкой. LEFT JOIN сохранит всех пользователей из левой таблицы. Для подсчёта используйте COUNT(collections.id), чтобы строка без коллекции дала ноль, а не единицу.
Найдите источник дубликатов
После соединения пользователя с несколькими коллекциями строк станет больше. Это не обязательно ошибка СУБД: проверьте кратность связи, условие ON и требуемую гранулярность результата.
Проверьте запрос
Подготовьте пользователей с нулём, одной и двумя коллекциями. Сравните фактический результат с ожидаемой таблицей. Уточните SQL-диалект, типы и правила сортировки. Выполняйте учебные запросы на отдельной базе с ограниченными правами.
Материал демонстрационный; названия таблиц используются как учебный пример.