Есть три таблицы со следующим содержанием:
mysql> select * from `users`;
+----+-------+----------+----------+
| id | email | password | nickname |
+----+-------+----------+----------+
| 1 | email | password | nickname |
+----+-------+----------+----------+
| 2 | email | password | nickname |
+----+-------+----------+----------+
mysql> select * from `users_data`;
+---------+-----------+----------+
| user_id | firstname | lastname |
+---------+-----------+----------+
| 1 | firstname | lastname |
+---------+-----------+----------+
| 2 | firstname | lastname |
+---------+-----------+----------+
mysql> select * from `users_sessions`;
+---------+----------------------------------+
| user_id | token |
+---------+----------------------------------+
| 1 | 01234567890123456789012345678901 |
+---------+----------------------------------+
| 2 | 01234567890123456789012345678902 |
+---------+----------------------------------+
Как сделать выборку с этих трёх таблиц чтоб результат был такой
array
'id' => 1
'email' => 'email'
'password' => 'password'
'nickname' => 'nickname'
'data' =>
array
'user_id' => 1
'firstname' => 'firstname'
'lastname' => 'lastname'
'session' =>
array
'user_id' => 1
'token' => '01234567890123456789012345678901'
То есть в коде можно было обращаться к данным так
<?php
$result['id'];
$result['nickname'];
$result['data']['firstname'];
$result['data']['lastname'];
$result['session']['user_id'];
$result['session']['token'];
Пример логики запроса или тип того
select * from
(select * from `users_sessions` where `user_id` = 1 and `token` = '01234567890123456789012345678901') as `session`,
(select * from `users_data` where `user_id` = `session`.`id`) as `data`,
select * from `users` where `id` = `session`.`id`