contact という MySQL テーブルがあるとします。次のようになります。
+----------+
|contacts |
+----------+
|id: int |
|name: vc |
|rank: int |
+----------+
「ランク」は、次のようなランクと呼ばれるテーブルにマップされた外部キーです。
+--------+
|ranks |
+--------+
|id: int |
|name: vc|
+--------+
すべてのユーザーのランクを取得することを期待して、次のような sql クエリを実行しましたが、ランクに一致する最初のユーザーしか得られません。
SELECT c.id, c.name, c.rank, r.name as rank_name FROM contacts c
INNER JOIN ranks r ON r.id=c.rank
これは、それぞれのランク名も含む連絡先のリストを取得するための正しい SQL ステートメントであると思われます。ただし、ランクごとに 1 つの連絡先しか返されず、常に最初の連絡先になります (contact.id で並べ替えた場合)。
解決策はありますか?たぶん、私は完全に簡単すぎる何かを見逃しています。知らない。
ありがとう!
編集
リクエストごとに、いくつかの行を次に示します。
Table: ranks
id name
6 Primary
7 Secondary
10 Test
Table: contacts
id name rank
1 Joe 6
2 Jane 6
3 Mike 7
4 Adam 10
5 Edna 7