Home > Software design >  Sort the results of the first table by the id of the second
Sort the results of the first table by the id of the second

Time:01-21

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

  • Related