Så, den förra koden är redigerad igen. Det uteblivna resultatet berodde på ett syntaxfel ;)
Frågan är dock tung att köra.
Databaser & SQLur Databashanterare & SQL
131 svar · 4 120 visningar · startad av oskars · sida 7 av 7
Hej! Nu sitter jag här. Återigen. Jävla SQL. Jag vet inte hur jag ska tänka. Så fort frågan blir komplicerad så fastnar jag. Jag ska försöka sammanfatta mitt problem: Min tabell: Startdatum;Starttid;Slutdatum;Sluttid 20080725;1415;20080725;1425 20080725;1420;20080725;1435 20080725;1325;20080725;1425 20080725;1505;20080725;1550 20080725;2205;20080725;2230 20080725;2145;20080725;221
Läs frågan i sin helhet →Så, den förra koden är redigerad igen. Det uteblivna resultatet berodde på ett syntaxfel ;)
Frågan är dock tung att köra.
Nice! Jag gör en testsökning nu och ser vad jag får för resultat!
Mjo, nu får vi fram resultat...
Men det visas så här:
2007-09-01 12:08:00 ; 2
2007-09-01 12:11:00 ; 3
2007-09-01 12:14:00 ; 2
2007-09-01 12:51:00 ; 1
2007-09-01 23:31:00 ; 7
2007-09-01 23:37:00 ; 7
2007-09-01 23:44:00 ; 5
Det ju bara vara 1st resultat per 2007-09-01 (Alltså det mellan dom klockslagen man angett).
Dom resultaten man får fram här... är det hur många resor som samtigit gjordes under dom exakta klockslagen?
Kanske det har att göra med hur man grupperar dom?
Oops. Det får bli typ så här i stället
select format(dt.s, "yyyy-mm-dd", 2, 2)
, max(dt.c)
from (
select a.new_Start as s
, ( select count(*) + 1
from allingsas
where id <> a.id
and ((hour(new_Start) = 12 and minute(new_Start) >= 0) or hour(new_Start) > 12)
and (((hour(new_Slut) = 13 and minute(new_Slut) <= 0) or hour(new_Slut) < 13) or (13 < 12 and hour(new_Slut) > 12))
and ((new_Start between a.new_Start and a.new_Slut) or (new_Slut between a.new_Start and a.new_Slut)) ) as c
from allingsas a
where weekday(a.new_Start, 2) = 7
and ((hour(a.new_Start) = 12 and minute(a.new_Start) >= 0) or hour(a.new_Start) > 12)
and (((hour(a.new_Slut) = 13 and minute(a.new_Slut) <= 0) or hour(a.new_Slut) < 13) or (13 < 12 and hour(a.new_Slut) > 12))
) as dt
group
by format(dt.s, "yyyy-mm-dd", 2, 2)
Börjar bli en rätt komplex fråga ; )
Sjodahl skrev:
Börjar bli en rätt komplex fråga ; )
Men Peter hanterar den bra :)
Reflekterat något över det jag skrev i PM?
Väldigt bra! (y)
oskars skrev:
Men Peter hanterar den bra :)
Reflekterat något över det jag skrev i PM?
Ja, men jag kan inte svara då du har fullt i brevlådan ;)
Maratontråden fortsätter ;)
select format(dt.s, "yyyy-mm-dd", 2, 2)
, max(dt.c)
from (
select a.new_Start as s
, ( select count(*) + 1
from allingsas
where id <> a.id
and (
(new_Start between a.new_Start and a.new_Slut) or (new_Slut between a.new_Start and a.new_Slut) or
(new_start < a.new_start and new_slut > a.new_start)
) ) as c
from allingsas a
where weekday(a.new_Start, 2) = 6
and (
((hour(a.new_start) > 12 or (hour(a.new_start) = 12 and minute(a.new_start) >= 0)) and ((12 < 13 and (hour(a.new_start) < 13 or (hour(a.new_start) = 13 and minute(a.new_start) = 0))) or (12 > 13 and (hour(a.new_start) < 13 or (hour(a.new_start) = 13 and minute(a.new_start) = 0)))))
or
(12 < 13 and (hour(a.new_slut) > 12 or (hour(a.new_slut) = 12 and minute(a.new_slut) >= 0)) and (hour(a.new_slut) < 13 or (hour(a.new_slut) = 13 and minute(a.new_slut) = 0)))
or
(12 > 13 and ((datediff("d",a.new_start,a.new_slut)=0 and (hour(a.new_start) > 12 or (hour(a.new_start) = 12 and minute(a.new_start) >= 0)) and (hour(a.new_slut) > 12 or (hour(a.new_slut) = 12 and minute(a.new_slut) >= 0)))
or (datediff("d",a.new_start,a.new_slut)=1 and (hour(a.new_start) > 12 or (hour(a.new_start) = 12 and minute(a.new_start) >= 0)) and (hour(a.new_slut) < 13 or (hour(a.new_slut) = 13 and minute(a.new_slut) = 0)) )))
or
(hour(a.new_start) < 12 and hour(a.new_slut) > 13)
)
) as dt
group
by format(dt.s, "yyyy-mm-dd", 2, 2)
Ovanstående fungerar inte. Det behövs fler villkor i den innersta SELECT:en. Om huvud-SELECT:ens tid omsluter det angivna tidsintervallet, måste den inre SELECT:en inte bara se till att den ligger inom huvudtiden, utan även se till att den (på ett eller annat sätt) ligger inom intervallet.
Just nu känner jag att det blir för mycket att hålla reda på ;) Kanske att jag tittar på det igen vid ett senare tillfälle.
Tack för all hjälp Peter!
Är det någon annan som förstår sig på det här?
Jag är tacksam för all hjälp!!!