Hej!
Jag skulle behöva lite hjälp här med ett join-problem.
Så här är upplägget:
I kampanjer_new listar jag olika kampanjer där varje kampanj har ett unikt kampanj_id.
I kampanjer_done listar jag de kampanjer som varje medlem har förbrukat. intMember för medlemmens idnummer och intKampanj för kampanjens id.
Nu vill jag på min kampanjsida göra så att de kampanjer man redan förbrukat Inte dyker upp i listan. Och då behöver jag en join för att det ska gå snabbt och smidigt.
Så här långt har jag kommit:
SQL = "SELECT k.kampanj_id, k.strTitel, k.strImp, k.strText, k.intGratis, k.strDatum, k.strPic, k.filter18, k.filter15, k.filter25, " _
& "k.intTjej, k.intNyh, k.intTav, k.intErb, k.intGra, k.intAntal, k.strProd, d.intMember, d.intKampanj " _
& "FROM kampanjer_new k join kampanjer_done d on d.intMember = "& lngID &" " _
& "WHERE bla bla bla"
Hur lägger jag in en kontroll för att se om medlemmen har utnyttjat kampanjen eller ej.
Hoppas ni förstår :)
mvh Andreas
EclipseMedlem sedan juli 20003 825 inlägg Förslag:
[kampanjer]
intID
dteCreated
intUserID
bolIsUsed <-- true/false
***
Du har alla kampajer på ETT ställe, bara att markera vilken som är använd.
Eclipse skrev:
Förslag:
[kampanjer]
intID
dteCreated
intUserID
bolIsUsed <-- true/false
***
Du har alla kampajer på ETT ställe, bara att markera vilken som är använd.
Hängde inte riktigt med där? :r
LarsGMedlem sedan dec. 200012 464 inlägg SQL = "SELECT k.kampanj_id, k.strTitel, k.strImp, k.strText, k.intGratis, k.strDatum, k.strPic, k.filter18, k.filter15, k.filter25, " _
& "k.intTjej, k.intNyh, k.intTav, k.intErb, k.intGra, k.intAntal, k.strProd " _
& "FROM kampanjer_new k " _
& "WHERE not exists " _
& "(select * from kampanj_done d where d.kampanj_id = k.kampamj_id and d.intMember = " _
& lngID & ")"
LarsG skrev:
SQL = "SELECT k.kampanj_id, k.strTitel, k.strImp, k.strText, k.intGratis, k.strDatum, k.strPic, k.filter18, k.filter15, k.filter25, " _
& "k.intTjej, k.intNyh, k.intTav, k.intErb, k.intGra, k.intAntal, k.strProd " _
& "FROM kampanjer_new k " _
& "WHERE not exists " _
& "(select * from kampanj_done d where d.kampanj_id = k.kampamj_id and d.intMember = " _
& lngID & ")"
Tack!
Det fungerar, dock tar det fortfarande grymt lång tid att få fram resultaten. (Måste söka igenom 300.000 poster för varje kampanj..).
Samt att jag inte lyckas få in min Where-sats som jag hade i orginal-koden. Finns det nåt annat sätt så jag kan få det mer snabbladdat?
überfuzzMedlem sedan apr. 2006409 inlägg Hur ser tabellerna ut? Med smart design borde inte 300 rader ta lång tid att söka igenom.
überfuzz skrev:
Hur ser tabellerna ut? Med smart design borde inte 300 rader ta lång tid att söka igenom.
Kampanjer_new:
kampanj_id, samt en del information om kampanjen.
Kampanjer_done:
intKampanj, intMember
Så när jag ska skriva ut kampanjerna så vill jag att de kampanjer som är förbrukade av medlemmen ej visas i listan.
IF intKampanj = kampanj_id Where intMember = mitt ID Then
'Visa inte
Så är det ju kortfattat, men får inte det att ladda snabbt :/
Tips?
Nu fick jag till så att det fungerar.
SQL = "SELECT k.kampanj_id, k.strTitel, k.strImp, k.strText, k.intGratis, k.strDatum, k.strPic, k.filter18, k.filter15, k.filter25, " _
& "k.intTjej, k.intNyh, k.intTav, k.intErb, k.intGra, k.intAntal, k.strProd " _
& "FROM kampanjer_new k " _
& "WHERE not exists " _
& "(select * from kampanjer_done d where d.intKampanj = k.kampanj_id and d.intMember = " _
& lngID &") AND intGra = '1' "
Response.Write SQL
Set RS = Connect.execute(SQL)
Dock tar det förbaskat lång tid att ladda sidan, ca 20 sekunder.. Trodde det jag skulle slippa med join?
Peter SMedlem sedan dec. 20025 483 inlägg Testa
SELECT k.kampanj_id
, k.strTitel
, k.strImp
, k.strText
, k.intGratis
, k.strDatum
, k.strPic
, k.filter18
, k.filter15
, k.filter25
, k.intTjej
, k.intNyh
, k.intTav
, k.intErb
, k.intGra
, k.intAntal
, k.strProd
FROM kampanjer_new k
LEFT
JOIN kampanjer_done d
ON k.kampanj_id = d.intKampanj
AND d.intMember = lngId
WHERE d.intKampanj IS NULL
AND k.intGra = '1'
Peter S skrev:
Testa
SELECT k.kampanj_id
, k.strTitel
, k.strImp
, k.strText
, k.intGratis
, k.strDatum
, k.strPic
, k.filter18
, k.filter15
, k.filter25
, k.intTjej
, k.intNyh
, k.intTav
, k.intErb
, k.intGra
, k.intAntal
, k.strProd
FROM kampanjer_new k
LEFT
JOIN kampanjer_done d
ON k.kampanj_id = d.intKampanj
AND d.intMember = lngId
WHERE d.intKampanj IS NULL
AND k.intGra = '1'
Koden fungerar, men tar fortfarande riktigt lång tid att ladda.. upp emot 20-30 sekunder.
Är det för att den söker igenom 300.000 poster som det tar sån tid?
Edit:
Ändrade index på intKampanj och nu verkar de rulla på bra.
Tack för all hjälp :)