20. november 2002 - 14:54Der er
54 kommentarer og 1 løsning
SQL (Group)
Hvorfor virker den her ik? strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where (OrderStatus = '1') and (dato >='" & DateAdd("d", -7, date) & "') group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5" Set top5 = Conn.Execute(strSQL)
Måske strSQL = "select pizzaID, count(pizzaID) AS pizzatop5 From orderlist where (OrderStatus = '1') and (dato >='" & DateAdd("d", -7, date) & "') group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5"
Hvad får du af fejl. Umiddelbart kender jeg ikke lige noget til at der er noget der hedder LIMIT i ASP. Jeg troede det hørte til PHP, men du må ikke hænge mig op på det.
Derudover er der en del andre fejl, prøv med det her
strSQL = "select COUNT(pizzaID) AS pizzatop5 From orderlist where (OrderStatus = '1') and (dato >='" & DateAdd("d", -7, date) & "') group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5"
Hvis du bruger en Access database kan du ikke bruge LIMIT funktionen mener kun at den er understoettet af MySql og MsSql. Hvis feltet orderstatus er en talvaerdi skal du ikke have ' ' omkring. Hvis dit felt dato er et dato felt skal du skifte ' ' ud med # #
strSql = "SELECT TOP 5 * FROM orderlist WHERE (OrderStatus = 1) AND (dato >= #" & DateAdd("d", -7, date) & "#) GROUP BY PizzaID ORDER BY [et_felt] DESC"
Det er jo et problem, der kan løses på flere måder. 1) Har du lyst til at lave formatet om til 2002-11-20 så det er nemt at søge på 2) Skal vi lave en oversmart SQL-sætning?
Står der så 1/1/2003 eller 01/01/2003 ?? Sikkert det første...
strSQL = "select pizzaID, count(pizzaID) AS pizzatop5 From orderlist where (OrderStatus = '1') and concat(left(dato,locate('/',dato)-1)+100*mid(dato,locate('/',dato)+1,locate('/',m,4))+10000*mid(m,locate('/',m,4)+1,20),"000000")+0>date_sub(curdate(),interval 30 day)+0 group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5"
strSQL = "select pizzaID, count(pizzaID) AS pizzatop5 From orderlist where (OrderStatus = '1') and concat(left(dato,locate('/',dato)-1)+100*mid(dato,locate('/',dato)+1,locate('/',dato,4))+10000*mid(dato,locate('/',dato,4)+1,20),"000000")+0>date_sub(curdate(),interval 7 day)+0 group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5"
strSQL = "select pizzaID, count(pizzaID) AS pizzatop5 From orderlist where (OrderStatus = '1') and concat(left(dato,locate('/',dato)-1)+100*mid(dato,locate('/',dato)+1,locate('/',dato,4))+10000*mid(dato,locate('/',dato,4)+1,20),'000000')+0>date_sub(curdate(),interval 7 day)+0 group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5"
Sådan - du kan jo eventuelt prøve om den virker. Smæk det bare på én lang linie
okey den udskriver ikke rigtig noget (lige som før), men hvorfor er det lige at den ikke kan samme linge, det fra min database og asp verb. "date" ?? og jeg har lavet den uden alt det med dato ting.... (har den bare ikke her) men den er slet ikke så lange... + jeg har andre SQl linger hvor jeg "søger" efter datoen uden problemmer... strSQL = "select Count(*) AS iAntal from orderlist where (dato ='" & DateAdd("d", -7, date) & "') AND (orderstatus = '1')" set day7 = Conn.Execute(strSQL) som virker som den skal
Når der står måned/dato/aar kan den ikke lave en sammenligning på < og >. Og det gør du ikke i den sidste. Jeg testede min på et liile eksempel. Må jeg se hvad du skrev?
Et mindre hack kunne være:
(dato ='" & DateAdd("d", -7, date) & "') and (dato ='" & DateAdd("d", -6, date) & "') and (dato ='" & DateAdd("d", -5, date) & "') and ,,,,osv
min top5 som jeg bruger nu, der er bare ikke det med dato strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5" Set top5 = Conn.Execute(strSQL)
okey højt underlidt nu virker den her ikke på min der hjemme men på abrjdet virker den findt... strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5" Set top5 = Conn.Execute(strSQL)
jeg har siget og prøvet en masse ting, og til sidste slettede jeg alle rs i min database... så add jeg bare en rs også virkede det... efter jeg add en til så der var to rs i min database virker det ikke hvorfor så det?
okey... ikke lige på min... og du må godt se.. http://developer.ameq.dk/pizzaonline/ i højer side (lige nu er der kun addet en) skriv lige så add jeg en til...
Det er et fedt design du/i har lavet på siden, men pas på med stavefejl. Det gi'r et dårligt indtryk når der er så mange og det har den ikke firtjent med så flot et design.
stig3 he he jeg staver af lort =) men der er en privat side =) så det gør ikke så meget men du skal have TAK =), men jeg har nolge mennesker bag mig som staver/retter for mig =) jeg scripter bare =) he he
Hmm ... er det så ikke det klassiske ASP<->Mysql-driver problem....? Der er konfigurationer (jeg kommer i tanker om cliche.dk - men du bruger azero), hvor en iøvrigt korrekt brug af count(*) simpelthen giver et tomt recordset. SQL-sætningen er der nemlig intet i vejen med.
hm jeg bruger den her på en anden server (samme side) strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5" Set top5 = Conn.Execute(strSQL)
den virker... og der enste jeg har lavet om er at min dato ikke er MySql dato men ASP datoen (date) kan det være det?
Men siger du at strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5" virker forskelligt på 2 forskellige maskiner? Eller hvad?
jubii efter en LANG aften fik jeg min server op og kører ingen... =) nu skal jeg bare lige få set på den "lange" version af SQL linge =) men det kigger jeg måske på i mogen...
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.