webForumDet fria alternativet

Krånglig fråga med klockslag!

Databaser & SQL

131 svar · 4 134 visningar · startad av oskars · sida 4 av 7

Frågan, av oskars

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 →
Medlem sedan nov. 20051 317 inlägg
#61

Okej, tack! Ska testa den direkt nu!

Och detta ska fortfarande fungera över dygnsgränserna? T.ex 2300 - 0100?

Medlem sedan dec. 20025 483 inlägg
#62

Tycker det :)

Medlem sedan nov. 20051 317 inlägg
#63

Peter S skrev:

Tycker det :)

SKITBRA svarat, haha!

Återkommer med testresultatet!

Medlem sedan nov. 20051 317 inlägg
#64

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.

Medlem sedan dec. 20025 483 inlägg
#65
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'
Medlem sedan nov. 20051 317 inlägg
#66

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!

Medlem sedan dec. 20025 483 inlägg
#67

Men med mitt förra inlägg får du ju ett antal. :)

Medlem sedan nov. 20051 317 inlägg
#68

Hm... Nä...

RecSet("Startdatum") & RecSet(0)

Resulterade i 2008-08-01 2008-08-01

dvs. dubbeldatum :)

Medlem sedan dec. 20025 483 inlägg
#69

Det är för att du måste skriva:

RecSet("Startdatum") & RecSet("c")
Medlem sedan nov. 20051 317 inlägg
#70

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...!

Medlem sedan dec. 20025 483 inlägg
#71

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'
Medlem sedan nov. 20051 317 inlägg
#72

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!

Medlem sedan dec. 20025 483 inlägg
#73
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
Medlem sedan nov. 20051 317 inlägg
#74

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!

Medlem sedan dec. 20025 483 inlägg
#75

Jag har redigerat det förra inlägget :)

Medlem sedan nov. 20051 317 inlägg
#76

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
Medlem sedan dec. 20025 483 inlägg
#77

Samma fel?

Medlem sedan nov. 20051 317 inlägg
#78

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å :/

Medlem sedan dec. 20025 483 inlägg
#79
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
Medlem sedan nov. 20051 317 inlägg
#80

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å?

270 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
135 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)