|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Aiuto in T-SQL
Ciao a tutti.
Ho progettato una tabella molto semplice che modella la struttura a sezioni gerarchiche di un sito. Codice:
-- Tabella Section CREATE TABLE [Section] ( SectionId INT IDENTITY(1,1) CONSTRAINT PK_Menu PRIMARY KEY, [Position] INT, BelongsTo NVARCHAR(255), ParentId INT ) Ora ho bisogno di una query che mi selezioni tutte le sezioni, escluse le sezioni foglie ma che includa le sezioni top-level Codice:
Esermpio: Section #1 --> SubSection #1 ---> SubSubSection #1 --> SubSection #2 Section #2 Vorrei: 1) escludere SubSubSection #1 perchè si tratta di una foglia 2) comprendere Section #2 perchè si tratta di un elemento top-level 3) comprendere SubSection #2 per lo stesso motivo Codice:
SELECT S1.SectionId AS ID, SL.Name AS [NAME], S1.Position AS POSITION, S1.ParentId AS PARENTID, COUNT(S2.ParentId) AS Childs FROM [Section] AS S1 LEFT JOIN [Section] AS S2 ON S1.SectionId = S2.ParentId INNER JOIN Section_Locale AS SL ON S1.SectionId = SL.SectionId GROUP BY S2.ParentId, S1.ParentId, S1.SectionId, S1.Position,SL.Name HAVING COUNT(S2.ParentId) > 0 ORDER BY S1.SectionId, S1.ParentId Il problema principale è: 1) come faccio a discriminare tra SubSubSection #1 e SubSection #2: entrambe hanno figli zero e parent id not null, tuttavia vorrei escludere SubSubSection #1 ed includere SubSection #2
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 02-05-2007 alle 12:58. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:34.