webForumDet fria alternativet

Dynamisk SQL

24 svar · 394 visningar · startad av saw

sawMedlem sedan mars 20011 880 inlägg
#1

Jag försöker att göra en redovisningssida till min webbshop. Jag vill ha resultat efter varje månad hur mycket av varje produkt som är sålt och totalsumman. I slutet så vill jag ha en totalt antal sålda produkter, och totalt pris för innevarande år.
I tapellen Prod, ingår bl a Produkt, Antal, Datum och pris. Hur bör en SQL se ut? Jag vill inte hårdkoda månaden utan jag tänkte att man skulle kunna få ut månadsnummren och sen köra en FOR-slinga som sen kopplas på något sätt till SQL:en.
Någon som har ett vettigt förslag?

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

EclipseMedlem sedan juli 20003 825 inlägg
#2

"Jag vill inte hårdkoda månaden..."
- Du sparar väl alla köp med datum??

"...och sen köra en FOR-slinga..."
- Kör du inte vanlig SQL?

"SELECT * FROM [products] WHERE [x_date] = #" & date() & "#;"

Kolla manualen för att få enbart månaden... jag har inte det i huvudet.

------------------
"Never underestimate your opponents." - Name the movie.

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Man kan ta en fråga som tar per månad

select produkt,y,m,sum(antal*pris),sum(antal) from (
select
Produkt,
year(sDate) as y, month(sDate) as m,
antal,pris from produkt)
group by produkt,y,m

och en som tar per år

select produkt,y,sum(antal*pris),sum(antal) from (  
select
Produkt,
year(sDate) as y
antal,pris from produkt)
group by produkt,y

sDate är då försäljningsdatum.

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#4

det blev fel
------------------
saw
__
saw@songer.com www.saw.songer.com
_
_

[Redigerat av saw den 25 apr 2001]

sawMedlem sedan mars 20011 880 inlägg
#5

Det stötte på patrull.
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
Jag fick göra en fråga där alla fälten fanns, men likväl så får jag felmedelande. Jag undrar kan det vara den biten som gör om datumet?
Jag var tvungen att ändra ditt sDate till Datum ( som jag har i tabellen/frågan.)

SQLStmt = "select produkt,y,m,sum(antal*pris),sum(antal) from (select Produkt,year(Datum) as y, month(Datum) as m,antal,pris from produkt)group by produkt,y,m"
Vad tror ni?

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Åh fan, kör du access.

SQLStmt = "select Produkt,year(Datum) as y, month(Datum) as m,sum(antal),sum(pris) from produkt group by produkt, month(Datum), year(Datum)"

Kanske, jag har ingen möjlighet att testa.

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#7

Det fungerade superbra, men...
När jag skulle försöka med nästa, så fick jag syntaxfel i join utrycket.
Vad tror ni:

SQLStmt1 = " select produkt,year(Datum) as y,sum(antal*pris) as totkr,sum(antal) as totnr from (selec Produkt,year(Datum) as y antal,pris from produkt) group by produkt,year(Datum"
Jag har försökt att göra som förra, men missar någonstans, men kan inte se det själv, kan ni?

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Är det hela satsen? Det saknas parenteser i slutet och så står det selec i stället för select.

Kan du visa den som fungerar och den som inte fungerar så ...

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#9

Detta är alltså SQL:en som skall ta fram totalt under året.
Trots justeringen som du påpekade så plir det ERROR

SQLStmt1 = " select produkt,year(Datum) as y,sum(antal*pris) as totkr,sum(antal) as totnr from (select Produkt,year(Datum) as y antal,pris from produkt) group by produkt,year(Datum)"

ERROR:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] SELECT-uttrycket innehåller ett reserverat ord eller argument som antingen är felstavat eller utelämnat, eller så är skiljetecknen felaktigt använda.
Det är som sagt ACCESS jag använder mig av.

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Det saknas ett komma här

SQLStmt1 = " select produkt,year(Datum) as y,sum(antal*pris) as totkr,sum(antal) as totnr from (select Produkt,year(Datum) as y[b],[/b] antal,pris from produkt) group by produkt,year(Datum)"

Red: det syntes inte så tydligt fast jag gjorde bold, men det saknas ett komma efter as y i din inre select
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 25 apr 2001]

sawMedlem sedan mars 20011 880 inlägg
#11

Jag blir nog med n*barn på det här.

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
Jag har kollat och dubbelkollat men vad jag kan se, så finns det inga felstavningar eller annat glömt.

SQLStmt1 = "select produkt,year(Datum) as y, sum(pris) as totkr,sum(antal) as totnr from (select Produkt,year(Datum) as y, antal,pris from produkt) group by produkt,year(Datum)"

Skall jag verkeligen behöva ge mig?

------------------
saw
__
saw@songer.com www.saw.songer.com
_
_

[Redigerat av saw den 26 apr 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#12

Det saknas en avslutande parentes efter sista year(datum)


SQLStmt1 = "select produkt,year(Datum) as y, sum(pris) as totkr,sum(antal) as totnr from (select Produkt,year(Datum) as y, antal,pris from produkt) group by produkt,year(Datum)[b])[/b]"

------------------
essentitia preter non sans multiplicandum

@ndersMedlem sedan juni 200032 969 inlägg
#13

:q

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

LarsGMedlem sedan dec. 200012 464 inlägg
#14

Vad säger jag. Bortse från mitt förra inlägg.

------------------
essentitia preter non sans multiplicandum

LarsGMedlem sedan dec. 200012 464 inlägg
#15

Ett nytt försök

SQLStmt1 = "select produkt, y, sum(pris) as totkr,sum(antal) as totnr from (select Produkt,year(Datum) as y, antal,pris from produkt) group by produkt,y"

Det är lite famlande då jag, som sagt, inte kan testa.

------------------
essentitia preter non sans multiplicandum

sawMedlem sedan mars 20011 880 inlägg
#16

Många tack, nu tycks det fungera.
Jag är väldigt tacksam för all hjälp

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

sawMedlem sedan mars 20011 880 inlägg
#17

Lyckan är tydligen ett väldigt kort ögonblick(enligt vissa 3 sek).
På min burk så fungerade mina SQL:er kanon, men så fort som jag la ut det på servers, så blev det ett hastigt uppvaknande. ERROR!!!

SQL:
SQLStmt1 = "select Kategori,produkt, y, sum(pris) as totkr,sum(antal) as totnr from (select Kategori,Produkt,year(Datum) as y, antal,pris from produkt) group by Kategori,produkt,y"

ERROR:
VBScript Errors Occured:
Error Number=13
Error Descr.=Type mismatch
Help Context=0
Source=Microsoft VBScript runtime error
Database Errors Occured
Error #-2147217900
Denna error text dyker upp när jag försöker att köra, någon som vet vad jag skall göra?

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

@ndersMedlem sedan juni 200032 969 inlägg
#18

använder du on error resume next?
isf, ta bort det så bör du få reda på varifrån felet härstammar, och hur det felet 'vanligtvis' ser ut.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

sawMedlem sedan mars 20011 880 inlägg
#19

Eftersom det ligger på servern, så får jag bara fram:

An error occurred on the server when processing the URL. Please contact the system administrator.

Jag kan inte få något bättre felmedelande om jag inte använder On Error resume next.
Då får jag den som jag visade vid mitt förra inlägg.

------------------
saw
__
saw@songer.com
www.saw.songer.com
_
_

@ndersMedlem sedan juni 200032 969 inlägg
#20

stäng av vänliga felmeddelanden i din browser, det är browsern som ger dig http 500 internal server error.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

148 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)