|
|||||||
|
|
|
![]() |
|
|
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 13:58. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:51.


















