I'm sorting some users by id (oldest to newest).
This is my accounts table:
Accounts
| id | name |
|---|---|
| 1 | James |
| 2 | Kirk |
| 3 | Roberto |
| 4 | Lars |
However, I need to improve this ordering by relating a second messages table.
Accounts_Messages
| id | sender_id | receiver_id |
|---|---|---|
| 1 | 1 | 4 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
In this case, users in Accounts table should be ordered by last messages.
This is the expected result:
Roberto;
Kirk;
Lars;
The question is: How can I sort the results of the first table by the id of the second?
I read that I need to use `JOIN` to relate these two tables, but I didn't know how to apply it in this specific case.
Thank you, guys!
CodePudding user response:
Hey use this MySQL query for your aspected result
Select Accounts.name from Accounts_Messages left join Accounts on Accounts.id = Accounts_Messages.receiver_id order by Accounts_Messages.id DESC
CodePudding user response:
this is what I understand by your question you need to sort the accounts by the id of the accounts_Message
I think you should try
SELECT acc.* FROM Accounts_Message am LEFT OUTER JOIN Accounts acc USING(id) ORDER BY id ASC
if both Accounts and Accounts_Message has same column name id use USING(id) or the column name is different use ON acc.id = am.id instead
