Twitt
@Twitt

Где практиковаться в сложных запросах JOIN?

Пришел на работу с хайлоад проектом своими знаниями уровня одного INNER JOIN какой используется для связи с какой то таблицей. Пока я джун, я учусь, но вот в проекте вижу запросы где мелькают четыре джойна, еще странно более когда одну и ту же таблицу джойнят 3 раза, по тому же полю, но с разными значениями (например как было бы INNER JOIN users as us1 ON us1.age = 18 INNER JOIN users as us2 ON us2.age = 20)
Я не понимаю смысл джойнить одну ту же таблицу 3 раза, и смысла задавать разные значения тоже не вижу особо, я банально не могу понять что тут написано.
Собственно, как практиковаться в джойнах? (по серьезному, а не где один джойн)
  • Вопрос задан
  • 418 просмотров
Решения вопроса 1
@asd111
Почитай ещё раз теорию про JOIN и про третью нормальную форму и ещё почитай что такое ONE TO MANY(один ко многим) и MANY TO MANY(многие ко многим).

Допустим у тебя есть одна большая таблица ТОВАРЫ и выглядит она вот так:
ID ITEM_ID NAME PRICE COMMENTS и так получилось что комментов у одного товара может быть много, цен несколько и названий тоже несколько, тогда тебе нужно будет для каждого варианта делать доп. строку в таблице, например
1 31337 Стол 10.00 Мне нравится мой стол
2 31337 Стол 10.00 Какой же классный стол
Чтобы не было повторений придумали нормальные формы и вот у нас уже появляется несколько таблиц:
ТОВАРЫ, КОММЕНТАРИИ, ЦЕНЫ, НАЗВАНИЯ
В таблице товары только ID, в комментах ID товара и коммент, в ценах только ID товара и цена, в названиях ID товара и название. То что мы сделали называется нормализацией БД.
ИТОГО
теперь чтобы получить все данные об одном товаре можно сделать JOIN четырех таблиц по ID товара или сделать запрос с where по четырем таблицам.
В реальности бывают случаи когда нормализация БД не нужна ради производительности.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
non progredi est regredi
практиковать тут

выяснить чем JOIN отличается от WHERE IN - тут
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL
Вообще-то тебе уже есть где практиковаться,
практикуйся на работе, смотри базу, таблицы,
какие данные в таблице.
начни с простых запросов, потом сложнее и тд.
Ответ написан
Комментировать
alexander_v_pryadko
@alexander_v_pryadko
e-commerce: автоматизация, интеграция, учет
можно поднять у себя на машинке сервер и мучить его запросами, сейчас с использованием докера это делается на 1-2-3
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы