Итак, у меня есть три таблицы:
Users
+-------+-----+----+
| id | val1|val2|
+-------+-----+----+
| 1 | 1 |3 |
| 2 | 2 |5 |
| 3 | 4 |7 |
+-------+-----+----+
UsersData
+----+--------------+------------+-----|
| id | users_id | created_at | gold|
+----+--------------+------------+-----|
| 9 | 1 |121454561212| 14 |
| 10| 1 |131454561212| 2 |
| 11| 2 |111454561212| 99 |
+----+--------------+------------+-----+
Extra
+----+------------+-----|
| id | users_id | val4|
+----+------------+-----|
| 1 | 1 | 5 |
| 2 | 1 | 6 |
| 3 | 1 | 7 |
+----+------------+-----+
Итак, чего я хочу добиться (в одном запросе), так это получить однострочный результат для пользователя с id = 1, который содержит:
- все из таблицы пользователей
- значение золота самой последней записи для этого пользователя (users_id = 1, creation_at = MAX)
- самый большой val4 из таблицы Extra, где users_id= 1
Таким образом, строка результата будет выглядеть следующим образом:
+-------+-----+----+-----+----+
| id | val1|val2|gold |val4|
+-------+-----+----+-----+----|
| 1 | 1 |3 | 2 | 7 |
------------------------------+
Я могу получить Первая часть сделана с помощью
SELECT Users.id, Users.val1, Users.val2, UsersData.gold
FROM UsersData
LEFT JOIN Users ON UsersData.users_id = Users.id
WHERE Users.id = 1
ORDER BY UsersData.created_at DESC
LIMIT 1
, а вторая частьс
SELECT MAX(Distances.distance) AS maxdistance FROM Distances WHERE Distances.users_id = 1
Но я не могу объединить их независимо от того, как я пытаюсь ... Я действительно хотел бы сделать это в одном запросе, очевидно, я могу сделать это с несколькими - но я считаю, что этопроблема в том, что мне не хватает навыков mysql.
Спасибо!