Slettet bruger
01. september 2004 - 15:22
Der er
2 kommentarer og
1 løsning
Hente data uden dubletter på baggrund af en valgt produktgruppe
Hej
Jeg har en foto-produktdatabase, hvor de enkelte produkter indeholder et ukendt antal farvekoder, defineret i et felt som en kommasepareret string.
Jeg ønsker at finde alle farvekoderne uden dubletter for et ukendt antal produkter
F.eks:
Jeg søger på "produkt 10, produkt 12 og produkt 14" i databasen:
produkt 10 indeholder feltet 'farvekode' med value ="100,120,300,700"
produkt 12 indeholder feltet 'farvekode' med value ="100,150,200"
produkt 14 indeholder feltet 'farvekode' med value ="90,100,300,500"
Det skal generere et output som: "90,100,120,150,200,300,500,700"
Hvordan griber jeg det bedst an??
Noget i stil med..?
(ikke afprøvet kode - blot et eksempel på samme)
' *************************************
' gruppen af produkter requestes som en string;
produktgruppe="10,12,14"
arr = Split(produktgruppe,",")
If isArray(arr) Then
For i = 0 To uBound(arr)
SQL_WHERE = SQL_WHERE & "(produkt_id = "&arr(i)&") AND "
Next
End If
SQL="Select * FROM produkt WHERE "&SQL_WHERE&" (Aktiv=true)"
' *************************************
- men hvordan får jeg farvekoderne grupperet og sorteret i forhold til valgte produktgruppe -
mvh, Michael
01. september 2004 - 16:58
#1
Du skal havde OR imellem produkt_id eller tager den ingen poster med ud.
Koden kunn være noget i stil med dette:
produktgruppe="10,12,14"
arr = Split(produktgruppe,",")
If isArray(arr) Then
For i = 0 To uBound(arr)
SQL_WHERE = SQL_WHERE & "(produkt_id = "&arr(i)&") "
if i<uBound(arr) then SQL_WHERE=SQL_WHERE & " OR "
Next
End If
if SQL_WHERE <> "" then SQL_WHERE = "(" & SQL_WHERE & ") AND "
SQL="Select * FROM produkt WHERE "&SQL_WHERE&" (Aktiv=true)"
Set rs = Conn.Execute(SQL)
strTmp=""
do while not rs.EOF
strTmp=strTmp&","&rs("farvekode")
rs.Movenext
loop
strTmp=mid(strTmp,2)
arrFarver=split(strTmp,",")
strFarve=","
for i = to ubound(arrFarver)
if inStr(1,strFarve,","&Trim(arrFarver(i))&",")=0 then
strFarve=strFarve & Trim(arrFarver(i)) & ","
end if
next
if len(strFarve)>1 then strFarve = Mid(strFarve,2,len(strFarve)-2)
response.write strFarve
Slettet bruger
01. september 2004 - 20:42
#3
eagleeye >> Det er lige efter drejebogen :) - takker mange gange!
hiks >> Kender ikke til metoden, men det skal dog lige tilføjes at ovenstående bare er en pseudokode for at belyse min hensigt. Den oprindelige kode er med helt andre kriterier og valg - og der findes faktisk ikke nogen specifikke produktgrupper i db'en.
Tak til jer begge, Michae(: