Avatar billede hojgaard Nybegynder
16. september 2008 - 13:08 Der er 5 kommentarer og
1 løsning

Returnere 0 når count er -1

Hej

Den her burde være nem ;o)

Jeg har f.eks. følgende statement:
SELECT i.*, (SELECT COUNT(1) FROM Item WHERE RootID = i.ItemID) - 1 AS Children FROM Item i...

Jeg vil gerne returnere 0 når Children er -1
Avatar billede arne_v Ekspert
16. september 2008 - 13:15 #1
Undlad at traekke 1 fra ??

Jeg tror at vi mangler en del af historien.
Avatar billede hojgaard Nybegynder
16. september 2008 - 14:03 #2
Hej Arne

Jeg var sikker på, der var indbygget en funktion i sql til at klare dette simple problem :o)

Når jeg select'er et item, og tæller children, tæller den sig selv med.
Item inkl. alle children har samme RootID.
Derfor trækker jeg 1 fra, da antallet skal være uden "parent".

Håber det er nogenlunde forståeligt ;o)
Avatar billede teepee Nybegynder
16. september 2008 - 14:08 #3
hvad med at selecte max(0,select....)
Avatar billede arne_v Ekspert
16. september 2008 - 14:13 #4
Jeg tror at du skal bruge en CASE WHEN
Avatar billede Syska Mester
17. september 2008 - 01:00 #5
Lyder som en svær måde at lave noget simpelt på ...

Hvis jeg har forstået det rigtigt ... så har du følgende:
RootID(Auto incrementalID), ParentID(Pejer på et RootID, null hvis det er top level) og sikkert en name column.

Så kan du i hvert fald gøre sådan her, for at tælle antal Children Nodes på hver Parent.

SELECT P.RootID, COUNT(C.ParentID) FROM [__test] AS P
LEFT JOIN [__test] C ON P.RootID = C.ParentID
GROUP BY C.ParentID, P.RootID

mvh
Avatar billede hojgaard Nybegynder
09. oktober 2012 - 16:26 #6
Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester