2012-05-04 9 views
3

J'ai un problème avec récupérer les valeurs des colonnes comme en fonction des autres colonnes j'ai essayé de le faire avec jointure externe et imbriquer select mais je pense que je ne peux pas trouver la solution dans ma têteCatégories et sous-catégories Base de données

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 

ce que je veux faire pour afficher le nom de la catégorie parente au lieu de parentID

Comme ça

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 
+0

ce que SGBDR utilisez-vous? – Taryn

+0

Microsoft SQL Server –

Répondre

6

vous devez joindre à e e tableau deux fois

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

les résultats seront:

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 

qui vous donnera la parentID, NomParent et nom de la sous-catégorie ou enfant.

Vous pouvez également le modifier pour inclure l'ID de la sous-catégorie, si nécessaire.

en fonction de votre édition vous pouvez utiliser les éléments suivants:

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 

qui se traduira par:

enter image description here

+0

Devrait-il être 'SELECT c2.Id ...'? OP semble vouloir simple myID, myName, parentName au lieu de myID, myName, parentID –

+0

@SamDeHaan il n'est pas exactement clair ce qu'ils veulent, la requête ci-dessus leur montre comment obtenir le nom de parent pour un enregistrement qu'ils ont demandé. – Taryn

+0

Merci ^^ tu me sauves la vie –

Questions connexes