SELECT składnia

M7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Szanowni Forumowicze,

mam w mssql tabelę:

symbol symbol_matka
s.60       NULL
bok.l      s.60      
bok.p      s.60      
plyta.18   bok.l     
plyta.18   bok.p     
pvc.2      bok.l     
pvc.2      bok.p     
pvc.1      bok.l     
pvc.1      bok.p     
szuf.d s.60      
szuf.prow szuf.d
szuf.dno szuf.d
plyta.18   szuf.dno
pvc.2      szuf.dno
pvc.1      szuf.dno

i chciałbym uzyskać taki wynik:

s.60       bok.l      plyta.18  
s.60       bok.l      pvc.1     
s.60       bok.l      pvc.2     
s.60       bok.p      plyta.18  
s.60       bok.p      pvc.1     
s.60       bok.p      pvc.2     
s.60       szuf.d szuf.prow
s.60       szuf.d szuf.dno plyta.18  
s.60       szuf.d szuf.dno pvc.2     
s.60       szuf.d szuf.dno pvc.1     

Czy mógłbym prosić o sugestie jak powinien być skonstruowany SELECT...

pzdr

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
0

zakładam tabele

Kopiuj
 
CREATE TABLE [dbo].[symbole](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[Symbol] [varchar](50) NULL,
	[SymbolMatka] [varchar](50) NULL
) ON [PRIMARY]

Wprowadzam dane
id Symbol SymbolMatka
1 s.60 NULL
2 bok.I s.60
3 bok.p s.60
4 plyta.18 bok.I
5 plyta.18 bok.p
6 pvc.2 bok.I
7 pvc.2 bok.p
8 pvc.1 bok.I
9 pvc.1 bok.p
10 szuf.prow szuf.dno
11 szuf.dno szuf.d
12 plyta.18 szuf.dno
13 pvc.2 szuf.dno
14 pvc.1 szuf.dno
15 szuf.d s.60

i teraz ten selekt jaki mi wyszedł. Coś czuje że nie oto chodziło ale wynik pasuje.

Kopiuj
select m1.SymbolMatka as [ROOT]
,m1.Symbol AS [Poziom1]
,m2.Symbol as [Poziom2]
,m3.Symbol as [Poziom3] 
from 
symbole AS M 
left join symbole as m1 on m.Symbol=m1.SymbolMatka
left join symbole as m2 on m1.symbol=m2.SymbolMatka
left join symbole as m3 on m2.Symbol=m3.SymbolMatka
where m.SymbolMatka is null
 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.