Avatar billede mccannon Nybegynder
01. maj 2003 - 11:43 Der er 8 kommentarer og
2 løsninger

SQL Problem IF EXISTS...

Hejsa alle :)

Okay jeg har den her fine SQL sætning til en vare database..hvilket jo er fint..MEN lige nu fungere den kun hvis der er subvare til en mastervare..hvilket jo sådan set er fint nok..MEN ak o ve..det er jo ikke alle varene som har en subvare..og så hente den ikek noget ud.
Jeg tror det er pågrund af WHERE EXISTS..så mit spørgsmål er..kan man alve en IF EXISTS og hvis man kan..hvordan ??

SQL sætningen .:

SQL = "SELECT vare.partnr, vare.del, vare.kategori, vare.beskrivelse, vare.billed, vare.specialbmrk,"
  SQL = SQL & " vare.indkoebspris AS NormalIpris, vare.resellerpris AS NormalFpris, vare.tilbudspris AS NormalTpris,"
  SQL = SQL & " vare.detailpris AS NormalDpris, vare.vaegt AS NormalVvaegt, vare.tilbud, vare.topsellers,"
    SQL = SQL & " vare.levvarenr AS Normallevnr, vare.oprettet, vare.varetypen, vare.hassubvare,"
    SQL = SQL & " vare.hasSubMaster,"
      SQL = SQL & " tblbmwnrmodel.modelnr, tblbmwnrmodel.bmwnr"
      SQL = SQL & " FROM vare INNER JOIN tblbmwnrmodel ON vare.partnr = tblbmwnrmodel.bmwnr"
        SQL = SQL & " WHERE EXISTS"
        SQL = SQL & " (SELECT ID, varenr, vare_size, bemerk, levvarenr, indkoebspris, resellerpris, detailpris, tilbudspris,"
          SQL = SQL & " varevaegt, tilbud, topsellers, model, submaster, belongsto, ListInCat"
          SQL = SQL & " FROM varesize WHERE vare.partnr = varesize.varenr"
            SQL = SQL & " AND varesize.ListInCat = True)"
            SQL = SQL & " AND vare.kategori = " & kategori
              SQL = SQL & " AND tblbmwnrmodel.Modelnr = '" & Modelnr & "'"

når man skriver sql sætningen ud.:

SELECT vare.partnr, vare.del, vare.kategori, vare.beskrivelse, vare.billed, vare.specialbmrk, vare.indkoebspris AS NormalIpris, vare.resellerpris AS NormalFpris, vare.tilbudspris AS NormalTpris, vare.detailpris AS NormalDpris, vare.vaegt AS NormalVvaegt, vare.tilbud, vare.topsellers, vare.levvarenr AS Normallevnr, vare.oprettet, vare.varetypen, vare.hassubvare, vare.hasSubMaster, tblbmwnrmodel.modelnr, tblbmwnrmodel.bmwnr FROM vare INNER JOIN tblbmwnrmodel ON vare.partnr = tblbmwnrmodel.bmwnr WHERE EXISTS (SELECT ID, varenr, vare_size, bemerk, levvarenr, indkoebspris, resellerpris, detailpris, tilbudspris, varevaegt, tilbud, topsellers, model, submaster, belongsto, ListInCat FROM varesize WHERE vare.partnr = varesize.varenr AND varesize.ListInCat = True) AND vare.kategori = 0 AND tblbmwnrmodel.Modelnr = 'E30'

Please Help :)
McCannon
Avatar billede oasen Nybegynder
01. maj 2003 - 13:22 #1
Inner Join returnerer kun fælles poster fra tabellerne. Du skal anvende Left Join:

SQL = "SELECT vare.partnr, vare.del, vare.kategori, vare.beskrivelse, vare.billed, vare.specialbmrk,"
  SQL = SQL & " vare.indkoebspris AS NormalIpris, vare.resellerpris AS NormalFpris, vare.tilbudspris AS NormalTpris,"
  SQL = SQL & " vare.detailpris AS NormalDpris, vare.vaegt AS NormalVvaegt, vare.tilbud, vare.topsellers,"
    SQL = SQL & " vare.levvarenr AS Normallevnr, vare.oprettet, vare.varetypen, vare.hassubvare,"
    SQL = SQL & " vare.hasSubMaster,"
      SQL = SQL & " tblbmwnrmodel.modelnr, tblbmwnrmodel.bmwnr"
      SQL = SQL & " FROM vare LEFT JOIN tblbmwnrmodel ON vare.partnr = tblbmwnrmodel.bmwnr"
        SQL = SQL & " WHERE vare.kategori = " & kategori
              SQL = SQL & " AND tblbmwnrmodel.Modelnr = '" & Modelnr & "'"
Avatar billede oasen Nybegynder
01. maj 2003 - 13:31 #2
Et eksempel:


  -Tabel1-
ID1____Navn
4______Susan
2______Per
6______Dorthe
1______Allan


  -Tabel2-
    ID2
    4
    3
    1


Set rs = Conn.Execute("Select Tabel1.Navn, Tabel2.ID2 From Tabel1 Left Join Tabel2 On Tabel1.ID1 = Tabel2.ID2")

Denne sætning vil give dig alle navnene fra Tabel1. Og mens du løber recordsættet i gennem, kan du så tjekke, om der findes en relateret post i Tabel2:

While Not rs.EOF
  Response.Write rs("Navn")
  If IsNull(rs("id2")) Then
      Response.Write " forekommer ikke i Tabel2"
  End If
  rs.MoveNext
Wend
Avatar billede oasen Nybegynder
01. maj 2003 - 13:35 #3
Ovenstående vil udskrive følgende:

Susan
Per forekommer ikke i Tabel2
Dorthe forekommer ikke i Tabel2
Allan
Avatar billede mccannon Nybegynder
01. maj 2003 - 13:44 #4
joo det har du ret i..men kunne jo være smart hvis man kunne undgå at skulle stille en masse if sætninger op ik...
Avatar billede mccannon Nybegynder
01. maj 2003 - 14:15 #5
men en du mener altså at man er ude i noget med 2 recordsets
?
Avatar billede oasen Nybegynder
05. maj 2003 - 08:50 #6
Næ, ét recordsæt! Hvad er det for nogle if-sætninger, du taler om?
Avatar billede mccannon Nybegynder
05. maj 2003 - 09:12 #7
jo ser du..hvis en vare har subvare er det en master vare ellers er det en normal vare

i begge tilfælde skal de listes i
Avatar billede mccannon Nybegynder
07. maj 2003 - 09:41 #8
anyway...det her kommer vi vist ikke vidre med..men du for 1/3 a points da du gav mig lidt inspiration til hvordan jeg kunne løse det :)
Avatar billede mccannon Nybegynder
07. maj 2003 - 23:00 #9
du oase..ligger du lige et svar
Avatar billede oasen Nybegynder
08. maj 2003 - 16:16 #10
Undskyld... jeg kom helt væk fra det igen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester