【達成したいこと】
下記の2つのテーブルがあった場合に、本人のIDをキーに、その本人の友達の分配率を1行で抽出したい。
例えば、ID 21 が指定されたら、下記のように抽出したいのですが、
自分でいくつも試みても、上手く1行で抽出できなくて苦戦しています。
良い方法があれば、ご教授頂ければ幸いです。
求めたい結果(ID21)
友達1の分配率 | 友達2の分配率 | 友達3の分配率 |
---|---|---|
2.6 | 3 | (Null) |
既存テーブル
友達テーブル(user)
|本人ID|名前|友達1のID(f1_id)|友達2のID(f2_id)|友達3のID(f3_id)
|:--:|--:|
|20|tanaka|1|2|3|
|21|yoshida|4|5|(Null)|
友達分配レート テーブル(friend_rate)
友達ID(id) | 分配率(rate) |
---|---|
1 | 1.5 |
2 | 2 |
3 | 2.5 |
4 | 2.6 |
5 | 3 |
[試したこと]
友達テーブルと、友達分配レートテーブルの結合テーブルを3つ作り、それぞれのテーブルから
分配率を抽出。
結果 → ID20については、上手くいきましたが、nullのあるID30について試みると何も抽出できませんでした。
(別々に結合テーブルを作っているつもりなのですが、その別々のテーブルが結合されてしまって、friend3は結果がnullなので、抽出ができないという結果になるのでしょうか)
SET @target_id = 21;
select friend1.rate as 友達分配1, friend2.rate as 友達分配2,friend3.rate as 友達分配3 from
(select rate from friend_rate inner join user
on friend_rate.id = user.f1_id where userinfo.id = @target_id) as friend1,
(select rate from friend_rate inner join user
on friend_rate.id = user.f2_id where userinfo.id = @target_id) as friend2,
(select rate from friend_rate inner join user
on friend_rate.id = user.f3_id where userinfo.id = @target_id) as friend3;
回答1件
あなたの回答
tips
プレビュー