SQL Joins

natural Join не дуже добре працює і не рекомендується його використовувати.
Приклад:
Об'єднає дві таблиці за спільною колонкою.
LEFT JOIN - по лівій таблиці знаходить співпадіння у правій
обєднає дві таблиці по artistId, оскільки джоін по лівій часині то КОЖНОМУ значенню з лівої БУДЕ ЗНАЙДЕНО співпадіння або null. Якщо при обєднанні по стовчику , як в прикладі вище назви стовпчиків ОДНАКОВІ в обох таблицях то замість ON albums.artistId = artists.artistId можна писати USING(ArtistId)

INNER JOIN - працює так само але знаходить лише ті співставлення в яких немає null. Тобто кожному значенюю з лівої таблиці ОБОВЯЗКОВО буде співставлення, або воно буде відкинуто якщо співствалення немає.

CROSS JOIN - кожному значенню з лівої таблиці буде співставленно ВСІ значенн з правої.
Умовно, якщо є таблиця з одним стовпчиком products і значеннями А, B, C і таблиця з стовпчиком Date і списком дат, то для A буде повний список дат, для B і для С

JOIN можна робити в 3 і більше таблиць також, наприклад:
SELECT
trackid,
tracks.name AS Track,
albums.title AS Album,
artists.name AS Artist
FROM tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid
SELECT
users.name as 'User name',
users.email as 'User email',
CONCAT(IFNULL(books.name, ''), IFNULL(pages.name, ''), IFNULL(chapters.name, ''), IFNULL(bookshelves.name, '')) as 'Resource Name',
views.viewable_type 'Resource type',
views.views as 'View count',
views.updated_at as 'Last visited'
FROM views
LEFT JOIN users on views.user_id = users.id
LEFT JOIN books on books.id = views.viewable_id and views.viewable_type = 'book'
LEFT JOIN pages on pages.id = views.viewable_id and views.viewable_type = 'page'
LEFT JOIN chapters on chapters.id = views.viewable_id and views.viewable_type = 'chapter'
LEFT JOIN bookshelves on bookshelves.id = views.viewable_id and views.viewable_type = 'bookshelf'
WHERE views.updated_at > DATE_SUB(NOW(), INTERVAL 24 HOUR)
ORDER BY views.updated_at DESC;