Как показывает практика для хранения некоторых данных в конкретных ситуациях удобно использовать несколько таблиц. После этого, выборка данных производиться путем одного запроса.
Для примера предположим, у нас есть три таблицы: users, city, photos. Таблица users предназначена для хранения данных учетной записи пользователя. В таблице city и photos находятся дополнительные данные о местоположении пользователя (city), а так же о его фотографиях (photos). Задача выбрать данные из трех таблиц посредством одного запроса.
Для наглядности рассмотрим простенькую схему в виде рисунка. Итак, в таблице 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.