Зачем на нужны join если есть where?

297
23 июля 2022, 00:30

Учу sql заново, и у меня возник вопрос зачем вообще нужны джоины. Объеденить таблицы ведь можно с помощью фореина и праймари ключей в таблицах и where. Этот вопрос и раньше возникал и был решён, но опять возникли трудности с пониманием.

Чтобы лучше понять о чем я, есть видосик где объясняется подобный способ: https://www.youtube.com/watch?v=wdz4MRlzOyE&ab_channel=CrackConcepts

Answer 1

Вообще говоря, подобные вопросы не для stackoverflow.com.

Есть несколько типов JOIN:

  • INNER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • FULL OUTER JOIN
  • CROSS JOIN
  • так далее

Большинство из них невозможно выразить с помощью предложения WHERE.

Answer 2

FROM Table1 t1, Table2 t2

Это CROSS JOIN, который в принципе можно урезать с помощью WHERE до нужного состояния.
Но при этом, вы полагаетесь на возможности планировщика СУБД.
Если он способен понять, что ваш WHERE аналогичен JOIN, то вы получите результат аналогичный JOIN, иначе вы рискуете нарваться на загрузку декартова произведения(CROSS JOIN) строк таблиц в память с последующей фильтрацией. =)

READ ALSO
Qt, C++ захват ссылки в асинхронной лямбде

Qt, C++ захват ссылки в асинхронной лямбде

Насколько безопасно так делать?

401
Чтение com портов на С++

Чтение com портов на С++

Есть ардуина и подключенный к ней датчик (какой, роли не играет) он подает данные на ардуино, а она соответственно на пкМне нужно написать...

343
Инициализация вектора объектов (с конструктором, принимающим значения), являющегося членом класса

Инициализация вектора объектов (с конструктором, принимающим значения), являющегося членом класса

Количество объектов класса MCP в векторе _rheos заранее неизвестноstd::vector использую впервые

345
Почему g++-10 не может использовать ключевые слова связанные с корутинами, хотя 20 стандарт включен и необходимый флаг выставлен?

Почему g++-10 не может использовать ключевые слова связанные с корутинами, хотя 20 стандарт включен и необходимый флаг выставлен?

Я попытался использовать ключевые слова из с++20 связанные с корутинами, но компилятор выдает ошибку

288