LEFT JOIN и другие

Один из базовых вопросов на собеседованиях: какой максимум строк может вернуть left join при длине таблиц А (2) и Б (3), при каких обстоятельствах.

Ответ известен, прошу толково объяснить, почему именно так. И вопрос: в каких случаях возникнет cross join?


Ответы (1 шт):

Автор решения: Akina

какой максимум строк может вернуть left join при длине таблиц А (2) и Б (3), при каких обстоятельствах.

Любой JOIN формально обрабатывает все возможные пары записей из таблиц. Если в таблицах 2 и 3 записи, это даёт 6 пар. Соответственно это максимум, который можно получить. И его можно получить при условии, что во всех записях обеих таблиц выражение связи имеет одно и то же значение.

Есть одно исключение. Если при внешнем связывании таблица на внешней стороне не имеет записей (пуста). В этом случае внешнее соединение работает, словно во внешней таблице есть одна запись. Однако это не влияет на именно максимальное количество выходных записей.

в каких случаях возникнет cross join?

Если выражение связывания не использует значений полей связываемых таблиц.

Формально это вроде бы не так, но вопрос предполагает ответ, не зависящий от данных.

→ Ссылка