webForumDet fria alternativet

Summera vikt på varor i kundvagn

Databaser & SQL

2 svar · 362 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#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!

Medlem 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 ;)

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

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)