Php 两张桌子&;按列排序,而不是同时按列排序
我有两张桌子。。一个用于球员的训练。。一个是玩家的角色。我无法更改表记录数据的方式。。所以我必须和这些人一起工作。最终,我正在尝试创建一个“谁在线”列表,需要一些帮助来确定如何对其进行排序 帐户会话(如果此列表中存在一行,则表示帐户已登录) 字符(显示所有激活或未激活的字符) 我试着在线订购,后跟字符名。所以根据这些表格。。我想要这样的打印件: 在线 用户1 用户3 用户6 离线 用户2 用户4 用户5 当使用两个表并按第二个表字符名排序时,我使用什么查询来打印这样的数据。。不管他们是否在线——从两个不同的表中进行两种不同的排序Php 两张桌子&;按列排序,而不是同时按列排序,php,mysql,select,sql-order-by,union,Php,Mysql,Select,Sql Order By,Union,我有两张桌子。。一个用于球员的训练。。一个是玩家的角色。我无法更改表记录数据的方式。。所以我必须和这些人一起工作。最终,我正在尝试创建一个“谁在线”列表,需要一些帮助来确定如何对其进行排序 帐户会话(如果此列表中存在一行,则表示帐户已登录) 字符(显示所有激活或未激活的字符) 我试着在线订购,后跟字符名。所以根据这些表格。。我想要这样的打印件: 在线 用户1 用户3 用户6 离线 用户2 用户4 用户5 当使用两个表并按第二个表字符名排序时,我使用什么查询来打印这样的数据。。不管他们是否在线——
如果会话表中有字符名。。这会让事情变得容易很多。。但我认为我自己无法改变这一点(有什么帮助吗?试试这样的方法
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和status,首先是online。
你也可以使用GROUP_CONCAT函数来增加兴趣你的charid和accountid在两个表中翻转,这就是它们在表中的方式。有一个会话表显示帐户-纯粹是为了确定它们是否登录以及它们正在播放的字符。然后character表显示关于该字符的其他信息即使我把这两个栏目换了一换,我还是不知道如何按照我想要的方式对它们进行排序。
------------------------------------
| charid | accountid | charname |
------------------------------------
| 1001 | 2001 | user1 |
------------------------------------
| 1002 | 2001 | user2 |
------------------------------------
| 1003 | 2002 | user3 |
------------------------------------
| 1004 | 2002 | user4 |
------------------------------------
| 1005 | 2003 | user5 |
------------------------------------
| 1006 | 2004 | user6 |
------------------------------------
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