4

外部結合とネストされた選択でそれをやろうとした他の列に依存するなど、列の値の取得に問題がありますが、頭の中で解決策を見つけることができないと思います

Categories Table:
ID  Name                ParentID
--------------------------------
1   Software            NULL
2   Domains             NULL
3   Games               NULL
4   Accounts            NULL
5   Others              NULL
6   Security Software   1
7   Operating Systems   1
8   Browsers            1
9   Developer Tools     1
10  .com Domains        2
11  .net Domains        2
12  .org Domains        2
13  Online Games        3
14  PC Games            3
15  PS Games            3
16  RapidShare Accounts 4
17  4shared Account     4
18  Web Templates       5
19  Flash Intros        5
20  Firewall            6
21  Antivirus           6

親IDの代わりに親カテゴリ名を表示したい

そのように

ID  Name                ParentID
--------------------------------
1   Software            NULL
2   Domains             NULL
3   Games               NULL
4   Accounts            NULL
5   Others              NULL
6   Security Software   Software
7   Operating Systems   Software
8   Browsers            Software
9   Developer Tools     Software
10  .com Domains        Domains
11  .net Domains        Domains
12  .org Domains        Domains
13  Online Games        Games               
14  PC Games            Games               
15  PS Games            Games               
16  RapidShare Accounts Accounts            
17  4shared Account     Accounts            
18  Web Templates       Others              
19  Flash Intros        Others              
20  Firewall            Security Software
21  Antivirus           Security Software
4

1 に答える 1

6

テーブルに2回参加する必要があります

SELECT c1.Id, c1.Name as parentname , c2.name
FROM categories c1
JOIN categories c2
    ON c1.id = c2.parentid

結果は次のようになります。

ID      ParentName            Name
1       software              security software
1       software              operating software
2       domains               .com domains
2       domains               .net domains
2       domains               .org domains
3       games                 pc games

これにより、サブカテゴリまたは子のparentID、parentName、およびNameが得られます。

必要に応じて、サブカテゴリ ID を含めるように変更することもできます。

編集に基づいて、以下を使用できます。

create table categories
(
    id int,
    name varchar(50),
    parentid int
)

insert into categories values(1, 'software', null)
insert into categories values(2, 'domains', null)
insert into categories values(3, 'games', null)
insert into categories values(6, 'security software', 1)
insert into categories values(7, 'operating systems', 1)
insert into categories values(8, 'browsers', 1)
insert into categories values(10, '.com domains', 2)
insert into categories values(11, '.net domains', 2)
insert into categories values(12, '.org domains', 2)
insert into categories values(13, 'online games', 3)
insert into categories values(14, 'pc games', 3)
insert into categories values(15, 'ps games', 3)

select c1.id
    , c1.name
    , (select name from categories where c1.parentid = categories.id) as ParentId
from categories c1

結果は次のようになります。

ここに画像の説明を入力

于 2012-05-04T18:05:38.237 に答える