0

以下のコードのようなテーブルが 2 つあります。

表: アカウント

id |    username    |   email   |   registered  
1   |   player1     | 123@asd.ad|   2012-05-03  
2   |   goodman     | 1345@bs.ad|   2012-06-03  
3 | goodbat | asdh@asd.d| 2012-06-05  

表:文字

guid    |   account |   name    |   rank  
213     |   1       |   fres    |   2  
214     |   2       |   sdg2    |   3  
215     |   1       |   fgax    |   4  
216     |   3       |   zFvx |  8  
217     |   3       |   zsvx    |   2 
...

1 つの Query だけで、最高ランクのキャラクターを持つアカウントを表示したい。

出力 (最高ランクのキャラクターを持つアカウントを表示)

username : player1 | 123@asd.ad | char: fgax(4)  
username : goodman | 1345@bs.ad | char: sdg2(3)  
username : goodbat | 134s@bs.ad | char: zFvx(8)  
...

私のクエリ:

SELECT username,email,id FROM accounts
4

5 に答える 5

0
SELECT a.username, a.email, a.id, c.name
FROM accounts a 
JOIN chars c ON a.id = c.account 
ORDER BY a.rank DESC
于 2012-07-12T17:39:36.167 に答える
0

これを試して。

SELECT 
t1.username as userName, 
t1.email as email, 
concat(t2.name, '(', t2.rank, ')') as name
FROM table1 t1 
INNER JOIN table2 t2 ON t1.id = t2.account 
ORDER BY t2.rank DESC
于 2012-07-12T18:11:16.387 に答える
0

これを試して::

SELECT 
a.username as userName, 
a.email as email, 
a.id as id, 
c.name as name

FROM accounts a 
INNER JOIN chars c ON (a.id = c.accoun)t 
ORDER BY a.rank DESC
于 2012-07-12T17:43:48.553 に答える
0

これを試すことができます:

SELECT a.username, a.email, c.name
FROM Accounts a, characters c
WHERE a.id=c.account
ORDER BY MAX(c.rank) DESC
于 2012-07-12T18:18:44.787 に答える
0

必要なのはテーブル結合です。テーブル結合が行うことは、あなたの場合はTable1table2の2つのテーブルを照会することです。ここにクエリがあり、その後に説明が続きます。

SELECT `t1`.`username`, `t1`.`email`, `t2`.account 
FROM `Table1` `t1`, `table2` `t2` 
WHERE `t1`.`id` = `t2`.`account` ORDER BY `rank` DESC
LIMIT 0,3

行 1: 選択... t1. usernameは .からのユーザー名列を意味t1します...そしてt1t2表記法は...

行 2: FROM... は、 Table1Table1 t1からクエリを実行し、それにエイリアスまたはポインターを割り当てたことを意味します。これは、 table2をに割り当てる方法と同じです。t1t2

行 3: WHERE... これは、共通の列に基づいてテーブルを結合することを意味します。この場合、Table1table2の両方が同じ値のセット ( Table1の id とtable2の account ) を共有します。したがって、上記の行を使用しました。

ORDER BY... これは、特定の基準 (この場合はランク) に基づいてレコードを配置することを意味します。2 つの方向があります - 昇順 (最小のトップ) を意味する ASC または降順を意味する DESC です。

行 4: LIMIT 0,3 これは、最初の行 (0) と 3 つのレコードのみを取得することを意味します。したがって、LIMIT 0,3

これは私ができる最も包括的な説明です。

于 2012-07-12T17:58:51.507 に答える