О web-разработке
и даже немного больше...

Как выбрать данные из нескольких таблиц?

Как показывает практика для хранения некоторых данных в конкретных ситуациях удобно использовать несколько таблиц. После этого, выборка данных производиться путем одного запроса.

Для примера предположим, у нас есть три таблицы: users, city, photos. Таблица users предназначена для хранения данных учетной записи пользователя. В таблице city и photos находятся дополнительные данные о местоположении пользователя (city), а так же о его фотографиях (photos). Задача выбрать данные из трех таблиц посредством одного запроса.

sql-join-sheme

Для наглядности рассмотрим простенькую схему в виде рисунка. Итак, в таблице users есть два нужных для связки поля, id – уникальный ключ, city_id – id ключа в таблице city. В свою очередь в таблице photos так же есть поле user_id, которое должно содержать значение идентичное полю id конкретной записи в таблице users. Таблица city содержит поле id, на которое, как было сказано ссылается поле city_id в таблице users. Таким образом, опираясь на поля с уникальными ключами в таблице можно хранить данные, которыми в последующем удобно воспользоваться запросив их в связке. Полагаю, с этим разобрались.

Используя конструкцию из команд INNER JOIN формируем такой запрос:

SELECT u.*,c.*,p.*
FROM users u
  INNER JOIN city c
    ON u.city_id=c.id
  INNER JOIN photos p
    ON p.user_id=u.id
WHERE u.id=10

В результате выполнения запроса, получаем сгруппированные данные из таблиц. Данный запрос является одним из вариантов группировки таблиц. Разумеется, есть и другие способы, подробнее о которых рекомендуется читать в документации MySQL.

Опубликован: 22.07.2014 г.

См. также:

Как подсчитать количество записей по месяцам в MySQL?
Работа с базой данных в WordPress
SQL-запросы для смены домена в WordPress
Как изменить тип таблиц в MySQL?
Изменение кодировки таблиц в базе MySQL
Фильтрация по полю DateTime в MySQL
Меняем пароль root в MySQL 5.7
Исправление ошибок в базе MySQL

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта