LEFT JOIN и другие
Один из базовых вопросов на собеседованиях: какой максимум строк может вернуть left join при длине таблиц А (2) и Б (3), при каких обстоятельствах.
Ответ известен, прошу толково объяснить, почему именно так. И вопрос: в каких случаях возникнет cross join?
Ответы (1 шт):
какой максимум строк может вернуть left join при длине таблиц А (2) и Б (3), при каких обстоятельствах.
Любой JOIN формально обрабатывает все возможные пары записей из таблиц. Если в таблицах 2 и 3 записи, это даёт 6 пар. Соответственно это максимум, который можно получить. И его можно получить при условии, что во всех записях обеих таблиц выражение связи имеет одно и то же значение.
Есть одно исключение. Если при внешнем связывании таблица на внешней стороне не имеет записей (пуста). В этом случае внешнее соединение работает, словно во внешней таблице есть одна запись. Однако это не влияет на именно максимальное количество выходных записей.
в каких случаях возникнет cross join?
Если выражение связывания не использует значений полей связываемых таблиц.
Формально это вроде бы не так, но вопрос предполагает ответ, не зависящий от данных.