<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

JOIN в SQL

JOIN в SQL

Команда JOIN в SQL-запросе служит для объединения выборки из нескольких таблиц в один результирующий набор, причём в результирующей выборке находятся все поля всех таблиц, участвующих в запросе. Давайте с Вами разберём подробнее использование JOIN в SQL.

Существует несколько вариантов запроса JOIN, начнём мы с самого популярного, а именно INNER JOIN:

SELECT * FROM `users` INNER JOIN `subscribers` ON `users`.`email` = `subscribers`.`email`

Подобным запросом я извлёк все записи, где в выборку попадут все пользователи сайта, которые также являются подписчиками.

Особенностью INNER JOIN является то, что в результат входят все поля со всеми значениями. Количество записей ровно столько, сколько удовлетворили условиям у обеих таблиц.

Теперь давайте перейдём к следующей разновидности JOIN, а точнее к LEFT OUTER JOIN:

SELECT * FROM `users` LEFT OUTER JOIN `subscribers` ON `users`.`email` = `subscribers`.`email`

Особенностью данного запроса является то, что результат выборки содержит записи, удовлетворяющие левой таблице. Если они ещё и удовлетворяют условиям правой таблицы, то это идентично INNER JOIN, иначе вместо значений в правой таблице будет NULL.

Теперь перейдём к RIGHT OUTER JOIN:

SELECT * FROM `users` RIGHT OUTER JOIN `subscribers` ON `users`.`email` = `subscribers`.`email`

Зеркальная противоположность LEFT OUTER JOIN, теперь NULL присутствуют в первой таблице, то есть слева.

И, наконец, последний тип JOIN - это CROSS JOIN:

SELECT * FROM `users` CROSS JOIN `subscribers`

Данный запрос выдаёт всевозможные сочетания двух таблиц. В данном запросе результирующее число записей - это перемножение количества записей в обеих таблицах.

Я ещё не рассказал о FULL OUTER JOIN, который не поддерживается MySQL. Но, на мой взгляд, он и не нужен. Его особенностью является то, что он выводит строку, в которой есть хотя бы одно совпадение с любой из таблиц. Соответственно, в другой таблице (в которой нет совпадения с условием) идут NULL. Фактически, это объединение LEFT OUTER JOIN и RIGHT OUTER JOIN:

SELECT * FROM `users` LEFT OUTER JOIN `subscribers` ON `users`.`email` = `subscribers`.`email` UNION SELECT * FROM `users` RIGHT OUTER JOIN `subscribers` ON `users`.`email` = `subscribers`.`email`

Вот я и рассказал обо всех разновидностях JOIN в SQL. Стоит отметить, что тема очень сложная, и её редко понимают с первого раза. Поэтому я Вам рекомендую обязательно посмотреть, как работают данные запросы на примере Ваших каких-нибудь таблиц (если их нет, то создайте). Проверьте все разновидности JOIN и посмотрите, чем они отличаются.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (9):

sab-ilnaz sab-ilnaz 21.01.2013 11:00:55

Я не силен в SQL, только начал изучать. Статья отличная. Но если бы были маленькие "примерчики" для каждого случая для сравнении, я бы понял абсолютно все! Спасибо за статьи!

Ответить

wanderer wanderer 21.01.2013 14:43:23

А как сделать сортировку вывода данных? Вот в мы же обьединяем два запроса юнионом, а как сделать ORDER BY и по какому же запросу и как его указать?

Ответить

Admin Admin 21.01.2013 20:52:23

В самом конце запроса его можно указать, после всех JOIN. Там же указывается и WHERE, и LIMIT.

Ответить

sync.o sync.o 21.01.2013 14:48:42

Михаил, а не рискованно открывать всему свету префикс таблиц в вашей БД?)

Ответить

Admin Admin 21.01.2013 20:49:55

Это старый, от Joomla ещё остался, но вообще, да, он попал сюда случайно, когда проверял правильность запросов, чтобы не было ошибок.

Ответить

wanderer wanderer 21.01.2013 21:31:39

Михаил очень прошу вас чтобы вы написали цикл статей про репликацию и подробную ее настройку. то что есть php.ru не доходчиво для меня.

Ответить

Admin Admin 22.01.2013 10:34:39

Возможно, напишу в следующем месяце.

Ответить

wanderer wanderer 22.01.2013 12:58:42

Я очень надеюсь! Она будет действительно нужна для многих юзеров!

Ответить

prog prog 29.09.2014 07:44:43

Здраствуйте!После этого запроса пропали все комментарий на сайте, как их вернуть?

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.