Kombination af 2 SQL statements
HejJeg kører et site, hvor jeg har nogen kampagner på, som mine brugere kan bruge. Når de anvender en kampagne (fx. et nyhedsbrev de kan tilmelde sig e.lig) så skal de ikke præsenteres for kampagnen længere. Jeg har en løsning på dette, men den er ikke helt "stueren" syntes jeg, og må kunne laves mere elegant.
Min database er opbygget med to tabeller, som følger (forsimplet):
* Campaigns
- campaignId
- campaignName
* Leads
- leadId
- campaignId
- userId
Tabellen "Campaigns" indeholder oversigten over kampagner. Tabellen "Leads" indeholder en oversigt ove der leads/kampagner, som brugeren har brugt.
For at vise en komplet oversigt over kampagner laver man normalt denne:
<code>
Select * from campaigns
</code>
... Men jeg skal netop ikke vise de kampagner, som brugeren allerede har brugt. Derfor gør jeg i øjeblikket sådan, med en totrins proces:
<code>
userid = 1 ' eksempel userid på en tilfældig bruger
strSql = "select campaignId from leads where userid="& userid &""
set rs = conn.execute(strSql)
do while not rs.eof
usedCampaignSQL = usedCampaignSQL& "and campaignId <> '"& rs("campaignId") &"' "
rs.movenext
loop
rs.close
</code>
På den måde laver jeg en klump SQL der indeholder alle de campaignId's der ikke skal vises.. og når jeg så skal lave min oversigt over ikke anvendte kampagner, for den pågældende bruger, genbruger jeg min "usedCampaignSQL" variabel:
<code>
strSql = "select campaignName from campaigns where campaignId <> 0 "& usedCampaignSQL &""
</code>
I princippet fungerer det. Men jeg syntes ikke det er kønt, og jeg kan fx. ikke benytte det (mig bekendt) på dén måde i en Stored Procedure.
Mit spørgsmål er derfor - kan man koge måden jeg gør det på nu, ned i én SQL sætning?