webForumDet fria alternativet

Summering och kontroll i annan tabell

Databaser & SQLur Databashanterare & SQL

7 svar · 827 visningar · startad av oskars

oskarsMedlem sedan nov. 20051 317 inlägg
#1

Hej!

Jag har denna koden för att summera ihop Antal*Price i en tabell som innehåller rader ur kundvagnarna.

SELECT SUM(Antal*Price) as totalt_pengar FROM min_kundvagn WHERE Status <> 5 AND Left(Added,7) = '2011-10'

Hur lägger jag till så att den bara räknar ihop de rader vars Kundvagn_ID även finns sparat på en kund i tabellen "mina_kunder"?

Tacksam för hjälp!

/ O

civilpolisenMedlem sedan dec. 2009872 inlägg
#2

Du har ju valt dumma namn på dina fält. Blandat svenska och engelska och trixat till det.
Skriv som det är i stället: basket och customers.
Du behöver ju inte skriva i koden att det är DINA kunder och MIN kundvagn... lite måste vara självklart!! :-)

[basket]
[customers]

SELECT SUM(b.Antal * b.Price) as totalt_pengar FROM [basket] b, [customers] ,c WHERE c.intID = b.intCustomersID AND Status <> 5 AND Left(Added,7) = '2011-10' AND c.intID = b.IntCustomersID

***
Detta är skrivet från huvudet och kanske det inte fungerar.
Din struktur (design) verkar lämna en del övrigt att önska.
Vad heter dina tabeller egentligen!?
Antingen får man väl logga in och då vet du ju vem som har loggat in eller så går det bara att lägga saker i kundvagnen... (??)

OK. jag ger dig halva svaret, någon annan får ge dig andra halvan!! :-)

oskarsMedlem sedan nov. 20051 317 inlägg
#3

Du kan vara lugn. Hittade på namnen till denna tråden!

Tack! Ska testa det du skrev!

@ndersMedlem sedan juni 200032 969 inlägg
#4

Man får inte använda strängfunktioner som Left() på ett datumvärde.

civilpolisenMedlem sedan dec. 2009872 inlägg
#5

@nders skrev:

Man får inte använda strängfunktioner som Left() på ett datumvärde.

Left(Added,7) = '2011-10'

Datumet är text, vilket i sig inte är helt genomtänkt...
Datum har brädgårdar. Text enkelfjumpar...

***
Till dig som skapade denna databas, fixa vettigt upplägg med datum för datum. Det är enklast för dig och bäst för alla!!

***
[redigera]
Förresten, det framgår inte i tråden vilken databas som avses, ser jag nu...!!

@ndersMedlem sedan juni 200032 969 inlägg
#6

Datumet är text, vilket i sig inte är helt genomtänkt...

Man får inte lagra datum i annat än datumfält, och man får inte använda strängfunktioner som Left() på datum.

oskarsMedlem sedan nov. 20051 317 inlägg
#7

civilpolisen, det är MySQL/ASP. Borde skrivit det, sorry.

Testat detta nu:

SQL = "SELECT SUM(b.Antal*b.Price) as totalt_pengar FROM table_basket AS b, " & _
						"table_customers AS c, WHERE " & _
						"b.customer_id = c.basket_id " & _
						"AND Status <> 5"

Men får följande av detta:
ODBC driver does not support the requested properties.

Vad har jag gjort fel?

LarsGMedlem sedan dec. 200012 464 inlägg
#8
table_customers AS c,

Det skall inte vara något komma där.

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