Ответ
Чаще всего используется INNER JOIN. Он возвращает только строки, для которых есть совпадение в обеих соединяемых таблицах, что делает его основным инструментом для связывания связанных данных.
Пример:
SELECT u.name, o.order_date, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
LEFT JOIN применяю, когда нужно получить все записи из основной (левой) таблицы, даже если для них нет соответствий в правой. Например, для получения списка всех пользователей и их заказов, включая тех, у кого заказов нет.
RIGHT JOIN и FULL OUTER JOIN использую значительно реже. CROSS JOIN — для специальных случаев, например, генерации декартова произведения при создании тестовых данных.
Ответ 18+ 🔞
А, ну это же классика, ёпта! Все эти JOIN'ы — как инструменты в гараже: один для повседневной работы, а другие пылятся на полке, пока не приспичит.
Вот смотри, INNER JOIN — это как твой основной разводной ключ. Без него нихуя не соберёшь. Берёшь две таблицы, скрепляешь их по какому-то общему полю, и вуаля — получаешь только то, что реально связано. Никакого мусора, только чистая, годная выборка. Если совпадения нет — строка нахуй не нужна, её и в выводе не будет. Просто и понятно, как дважды два.
Пример, чтобы не быть голословным:
SELECT u.name, o.order_date, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
Вот и всё, ядрёна вошь. Все пользователи с их заказами, и ни одного левого человека без покупок.
Дальше идёт LEFT JOIN. Вот это уже хитрая жопа. Он тебе вытащит ВСЁ из левой таблицы, даже если в правой для этой записи пустота, как в кармане у студента после стипендии. Нужен, когда ты, например, хочешь посмотреть на всех юзеров, включая тех лодырей, которые нихуя не купили. Справа у них будет NULL, но они в отчёте будут — для галочки.
А вот RIGHT JOIN и FULL OUTER JOIN — это уже такое, на любителя. Честно? Использую их раз в пятилетку, и то, когда мозг уже отказывается работать и хочется какого-нибудь извращения. RIGHT JOIN — это как LEFT JOIN, только наоборот, но кто ж так думает-то? Проще переставить таблицы местами и использовать привычный левый джоин, волнение ебать.
CROSS JOIN — это вообще отдельная песня. Он делает декартово произведение, то есть скрещивает каждую строку из одной таблицы с каждой строкой из другой. Получается овердохуища записей. Нужен в исключительных случаях, например, когда тебе надо сгенерить кучу тестовых данных или построить какую-нибудь хитрую матрицу. В обычной жизни от него только геморрой.
Короче, запомни: INNER — твой рабочий конь, LEFT — твой спасательный круг для отчётов «со всеми», а остальные — так, экзотика для особо одарённых моментов.