Okej, tack! Ska testa den direkt nu!
Och detta ska fortfarande fungera över dygnsgränserna? T.ex 2300 - 0100?
131 svar · 4 126 visningar · startad av oskars · sida 4 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 →Okej, tack! Ska testa den direkt nu!
Och detta ska fortfarande fungera över dygnsgränserna? T.ex 2300 - 0100?
Tycker det :)
Hm... känns som att det är VÄLDIGT nära nu...
Men får ändå det här:
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Weekday(d.Startdatum) = 3 AND Starttid > '2300' AND Sluttid < '0100' dt'.
På detta:
SELECT d.Startdatum, ( SELECT COUNT(*)+1 FROM allingsas WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid)
OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum)
OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Weekday(Startdatum) = 3) as c
FROM allingsas d WHERE Weekday(d.Startdatum) = 3 AND Starttid > '2300' AND Sluttid < '0100' dt
Jag var tvungen att ta bort K1 = '06' och framförallt InStr(AC,'-') < 0 ... för det verkade inte fungera med dom. Får testa att lägga till det sen när "grunden" är färdig!
EDIT: Jag har gått igenom den utskrivna frågan hundra gånger nu.. hittar inget fel.
SELECT d.Startdatum
, ( SELECT COUNT(*)+1
FROM allingsas
WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid)
OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum)
OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Weekday(Startdatum) = 3) as c
FROM allingsas d
WHERE Weekday(d.Startdatum) = 3
AND Starttid > '2300'
AND Sluttid < '0100'
AHA!!! Du vill fortfarande att jag ska ha med:
SELECT max(dt.c)
FROM (...
osv... eller hur? Jag lägger dit det igen :)
Eller kanske inte... hm... För nu har jag inget Antal.. jag testar med det jag skrev här!
Men med mitt förra inlägg får du ju ett antal. :)
Hm... Nä...
RecSet("Startdatum") & RecSet(0)
Resulterade i 2008-08-01 2008-08-01
dvs. dubbeldatum :)
JAG TESTADE DET!!! Kvällen tar ut sin rätt! Tack iaf! :)
Intressant resultat jag får fram iaf:
2008-08-04 ; 4828
2008-08-04 ; 4848
2008-08-04 ; 7
Det verkar vara rätt till en tredjedel. För det första så ska datumet bara visas 1st gång... och ja... 4828 är inte möjligt :) Undrar vad det är för siffror...
EDIT: (testar på bara 1st dag nu)
Fredagar 0030 - 0100 ger:
2008-08-01 ; 10012
2008-08-01 ; 9983
Det ska vara totalt 4st (om jag minns rätt nu) för den frågan...
EDIT: hehe....
2008-08-01 ; 10012
2008-08-01 ; 9983
2008-08-22 ; 654
2008-08-29 ; 368
2008-08-29 ; 67
2008-07-04 ; 9503
2008-07-04 ; 345
2008-07-11 ; 9673
2008-07-11 ; 231
2008-07-18 ; 9746
2008-07-18 ; 252
2008-07-25 ; 9870
2008-07-25 ; 15
2008-06-06 ; 8611
2008-06-06 ; 8590
2008-06-06 ; 366
2008-06-06 ; 41
2008-06-06 ; 13
2008-06-13 ; 8847
2008-06-13 ; 1065
2008-06-13 ; 1
2008-06-13 ; 1
2008-06-27 ; 13
2008-06-27 ; 1
Alldeles för höga siffror... konstigt som fan...!
Testa så här i stället:
SELECT d.Startdatum
, ( SELECT COUNT(*)+1
FROM allingsas
WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid)
OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum)
OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Startdatum = d.Startdatum) as c
FROM allingsas d
WHERE Weekday(d.Startdatum) = 3
AND Starttid > '2300'
AND Sluttid < '0100'
Japp! Mkt mkt mkt finare :) Bra jobbat som fan av dig!
Den visar dock ett datum flera gånger.
Så här t.ex:
2008-08-05 ; 4
2008-08-05 ; 3
2008-08-12 ; 2
2008-08-12 ; 2
2008-08-19 ; 1
2008-08-26 ; 2
2008-08-26 ; 1
Bara 1st datum per... ja.. datum :)
Jag ska kontrollera så att siffrorna verkligen stämmer också...
Du är ett SQL-geni!
SELECT dt.sd, max(dt.c)
FROM (
SELECT d.Startdatum as sd
, ( SELECT COUNT(*)+1
FROM allingsas
WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid)
OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum)
OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Startdatum = d.Startdatum) as c
FROM allingsas d
WHERE Weekday(d.Startdatum) = 3
AND Starttid > '2300'
AND Sluttid < '0100')
) dt
GROUP
BY dt.sd
Alltså, nu skäms jag så mkt att jag spricker snart. Men jag hittar aldrig några fel, även om dom finns där.
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
SELECT dt.sd, max(dt.c) FROM (SELECT d.Startdatum sd, (SELECT COUNT(*)+1 FROM allingsas WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid) OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum) OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Startdatum = d.Startdatum) as c FROM allingsas d WHERE Weekday(d.Startdatum) = 2 AND Starttid > '1000' AND Sluttid < '1100')) dt GROUP BY dt.sd
Vill bara få ett slut på det så vi kan lämna det här bakom oss :e Du gör ett GRYMT jobb!
EDIT: Det är så många parenteser att jag inte hänger med!
Jag har redigerat det förra inlägget :)
Jag är hemskt ledsen alltså... det fungerar inte ändå :( samma fel
RecSet.Open "SELECT dt.sd, max(dt.c) FROM ( SELECT d.Startdatum as sd, ( SELECT COUNT(*)+1 FROM allingsas WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid) OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum) OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Startdatum = d.Startdatum) as c FROM allingsas d WHERE Weekday(d.Startdatum) = "&Request.Form("Veckodag")&" AND Starttid > '"&Starttid&"' AND Sluttid < '"&Sluttid&"') ) dt GROUP BY dt.sd", Connect, 3, 3
Do Until RecSet.EOF
Response.Write("<tr style=""background-color:#"&Color&"""><td width=""100"">"&RecSet("sd")&"</td><td width=""10"">;</td><td>"&RecSet("c")&"</td></tr>")
RecSet.MoveNext
Loop
End If
Samma fel?
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
test.asp, line 187
Sorry asså :/
SELECT dt.sd, max(dt.c)
FROM (
SELECT d.Startdatum as sd
, ( SELECT COUNT(*)+1
FROM allingsas
WHERE ((Starttid > d.Starttid AND Starttid < d.Sluttid)
OR (Sluttid > d.Starttid AND ((Sluttid < d.Sluttid AND Slutdatum = d.Startdatum)
OR (Sluttid > d.Sluttid AND Slutdatum < d.Slutdatum)))) AND Startdatum = d.Startdatum) as c
FROM allingsas d
WHERE Weekday(d.Startdatum) = 3
AND Starttid > '2300'
AND Sluttid < '0100'
) dt
GROUP
BY dt.sd
Fantastiskt!
Jag fick först att "&RecSet("c")&" inte hittades... men då ändrade jag det till "&RecSet(1)&"... och det verkar ju fungera? :) Tänk att jag klarar nått själv så här sent.
Kunde du se om resultatet verkligen stämmer med datan?
Jag tycker det ser korrekt ut...
Jag menar. SKA den här frågan vara korrekt? Och visar siffrorna ändå fel, är det datan det är fel på då?