Hej NG
Jeg har et problem som jeg håber at i kan hjælpe mig med. Jeg har
også postet denne under dk.edb.database, da tråden hører mest
hjemme der, men jeg ved jo at nogle af jer herinde er skarpe til
SQL, så prøver også lige her :)
Jeg har to tabeller i min MSSQL database
Personer som indeholder
ID - int
Henviser - int
Henvist - int
Dato - datetime
Tid som indeholder
ID - int
Nummer - int
Tid - int
Dato - datetime
I tabellen Personer har jeg nogle henvisere, som har henvist
nogle henviste. Nogle af disse henviste, har så henvist nogle nye
henviste, og er dermed også selv blevet henvisere.
Så indholdet af tabellen kunne være
Henviser - Henvist
10000000 - 10000001
10000000 - 10000002
10000000 - 10000003
10000001 - 10000004
10000001 - 10000005
10000002 - 10000006
10000005 - 10000007
10000007 - 10000008
10000008 - 10000009
Tabellen Tid indeholder tid(i hele minutter) som hører til de
numre som er i Personer tabellens Henvist kolonne (så Henvist =
Nummer)
Indholdet af tabellen kunne være
Tid - Nummer
100 - 10000000
150 - 10000001
100 - 10000002
500 - 10000003
200 - 10000004
300 - 10000005
100 - 10000006
200 - 10000007
150 - 10000008
400 - 10000009
Nu kommer så mit problem. Jeg skal have udvalgt summen af den tid
som hver henviser har i 4 leds dybde. Det vil sige at henviser
10000000 skal have summen af tiden for 10000001, 10000002 og
10000003, samt 10000004 og 10000005(som 10000001 har henvist),
10000006(som 10000002 har henvist), 10000007(som 10000005 har
henvist), 10000008(som 10000007 har henvist), MEN IKKE 10000009,
da dette er 5. led i kæden, og heller ikke 10000000(som er
henviseren selv).
Altså skal jeg have udtrukket Henviser 10000000 med tiden 1700.
Jeg skal have udtrukket summen af tiden for alle henvisere, men
det er ikke alle der har 4 led. Eks har 10000008 kun et led
(10000009), og dermed vil udtrækket blive Henviser 10000008 med
tiden 400.
Jeg har efterhånden prøvet en del forskellige ting, men er ikke
rigtigt kommet frem til noget der virker. Med denne sql-sætning
kan jeg få udtrukket første led
SELECT Distinct(Personer.Henviser), SUM(Tid.Tid) AS Tiden,
Personer.Henvist FROM martin.Personer, martin.Tid WHERE
Personer.Henvist = Tid.Nummer GROUP BY Personer.Henviser,
Personer.Henvist ORDER BY Personer.Henviser
Her får jeg dog en lille fejl med, idet den første Henviser får
medregnet sin egen tid (og det skal den jo ikke)
Jeg kan ikke finde ud af hvordan jeg får udvalgt data ned til og
med led 4, og håber på at en af de kloge folk herinde kan hjælpe
mig
videre.
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! =>
http://www.html.dk/tutorials