Две таблицы и Упорядочение по столбцу, но не в обоих

У меня есть два стола … один для сеанса игрока … и один для персонажа игрока. Я не могу изменить способ записи данных в таблицах … поэтому мне приходится работать с ними. В конечном счете, я пытаюсь создать список «кто онлайн», и мне нужна помощь, чтобы понять, как все это отсортировать.

сеансы аккаунта (если в этом списке присутствует строка, аккаунт авторизуется)

----------------------
| accountid | charid |
----------------------
| 1001      | 2001   |
----------------------
| 1004      | 2006   |
----------------------
| 1002      | 2003   |
----------------------

символы (показывает все символы активные или нет)

------------------------------------
| charid    | accountid | charname |
------------------------------------
| 1001      | 2001      | user1    |
------------------------------------
| 1002      | 2001      | user2    |
------------------------------------
| 1003      | 2002      | user3    |
------------------------------------
| 1004      | 2002      | user4    |
------------------------------------
| 1005      | 2003      | user5    |
------------------------------------
| 1006      | 2004      | user6    |
------------------------------------

Я пытаюсь заказать онлайн, а затем имя персонажа. Так что в соответствии с этими таблицами … Я бы хотел распечатать как это:

ОНЛАЙН
user1
user3
user6

НЕ В СЕТИ
user2
user4
USER5

Какой запрос я использую для распечатки таких данных, когда он использует две таблицы и сортирует по именам символов второй таблицы … и находятся ли они в сети — две разные сортировки из двух разных таблиц?

Если бы в таблице сессий были имена персонажей … это сделало бы это намного проще … но я не думаю, что смогу изменить это сам. 🙁 Любая помощь?

0

Решение

Попробуйте что-то вроде этого

SELECT      charname, IF(sessions.charid IS NULL, 'offline', 'online') as status
FROM        characters
LEFT JOIN   sessions
ON          characters.charid=sessions.charid
AND         characters.accountid=sessions.accountid
ORDER BY    status DESC, charname ASC

Это должно дать вам таблицу из двух столбцов с charname и статусом, сначала онлайн.
Вы могли бы получить больше с функцией GROUP_CONCAT тоже

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]