プロが教える店舗&オフィスのセキュリティ対策術

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

T_a
id parent_id name
———————————
1 null くだもの
2 1 りんご
3 1 みかん
4 1 ぶどう
5 null やさい
6 5 キャベツ
7 5 かぼちゃ
8 5 にんじん

T_b
user_id id
——————
a 2
a 6
b 3
b 8
c 8
d 4

T_c
user_id name
——————
a たろう
b はなこ
c じろう
d ごんすけ

求めたい結果は以下です。
a たろう りんご キャベツ
b はなこ みかん にんじん
c じろう null にんじん
d ごんすけ ぶどう null

この際のクエリーをご教示願います。
mysqlを使っています。

A 回答 (2件)

普通はほしい結果のNULLは消えて、文字列は結合する



create table T_a(id int , parent_id int null, name varchar(10));
insert into T_a values(1,null,'くだもの'),(2,1,'りんご'),(3,1,'みかん'),(4,1,'ぶどう'),(5,null,'やさい'),(6,5,'キャベツ'),(7,5,'かぼちゃ'),(8,5,'にんじん');
create table T_b(user_id varchar(10) , id int);
insert into T_b values('a',2),('a',6),('b',3),('b',8),('c',8),('d',4);
create table T_c(user_id varchar(10) , name varchar(10));
insert into T_c values('a','たろう'),('b','はなこ'),('c','じろう'),('d','ごんすけ');

結果:
select *,(select group_concat(T_a.name)
from T_b inner join T_a on T_a.id=T_b.id
group by user_id
having user_id=T_c.user_id
) as names
from T_c

T_bのnameを2列にしたいなら何が前で何が後ろになるか明確な
ロジックが必要。
    • good
    • 0

テーブルと列の関係性を明記しないと話にならん



推定は出来てもそれは推定でしかない
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!