webForumDet fria alternativet

Summera vikt på varor i kundvagn

Databaser & SQLur Databashanterare & SQL

2 svar · 362 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena!
Jag håller på med en webbshop där kostnaden för frakt kommer vara olika beroende på vad man köpt.
Min tabelldesign ser ut såhär:

[b]tbl_shopProd[/b] (Produkter i shoppen)
prodId, räknare
prodName, text
.....
prodWeight, tal

[b]tbl_shopOrderHead[/b] (Orderhuvud)
orderId, räknare
custNum, tal

[b]tbl_shopOrderRow[/b] (Orderrad)
rowId, räknare
orderId, tal
prodId, tal

Dom tre tabellerna måste jag använda mig av för att få fram ett resultat.
Nu vill jag alltså summera vikten från tbl_shopProd där idnumret finns i tbl_shopOrderRow och där orderId är tex. '1'.

Har funderat lite fram och tillbaks på det här, men jag vet inte om det kanske finns lättare sätt?
Säg till om jag förklarat konstigt, eller om jag ska visa mer kod.
DBMS är Access och jag använder ASP.

Tack på förhand!

MickeA.comMedlem sedan feb. 20034 441 inlägg
#2

Nu har jag löst det.
Det finns kanske bättre sätt än mitt, så kom gärna med förslag om det är något jag bör ändra.
Såhär gjorde jag:

Function sumWeight(chartId)
	If isNumeric(chartId) Then
		sSql =	"SELECT t1.orderId AS master_id, orderSession, t2.orderId AS slave_id, prodId " &_
			"FROM tbl_shopOrderHead t1 INNER JOIN tbl_shopOrderRow t2 " &_
			"ON t1.orderId = t2.orderId " &_
			"WHERE orderSession = " & chartId & " " &_
			"ORDER BY prodId ASC"
'		Response.Write(sSql) : Response.End
		Set rsTmp = oConn.Execute(sSql)
		If Not rsTmp.EOF Then
			tmpStr = 0
			While Not rsTmp.EOF
				tmpStr = rsTmp("prodId")
				resStr = tmpStr & "," & resStr
			rsTmp.MoveNext
			Wend
		End If
		Set rsTmp = Nothing
		weightStr = Left(resStr, Len(resStr) - 1)
		sSql =	"SELECT SUM(prodWeight) " &_
			"FROM tbl_shopProd " &_
			"WHERE prodId IN(" & weightStr & ")"
'		Response.Write(sSql) : Response.End
		Set rsTmp = oConn.Execute(sSql)
		If Not rsTmp.EOF Then resStr = rsTmp(0) Else resStr = "Feeel" End If
		Set rsTmp = Nothing
		sumWeight = resStr
	Else
		sumWeight = "Ett fel uppstod vid beräkning..."
	End If
End Function

Funkar fint ;)

emissionMedlem sedan dec. 19996 721 inlägg
#3
strSQL = "SELECT SUM(p.prodWeight) FROM tbl_shopProd p, tbl_shopOrderHead h, tbl_shopOrderRow r WHERE p.prodId=r.prodId AND r.orderId=p.orderId AND orderSession= " & chartId

chartId?

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