Jeg har 2 problemer med JOIN, hvor jeg ikke kan få skrevet den korrekte syntaks. Håber på hjælp her.
Jeg har en hjemmeside med vine, vingårde og druer. Vinene er listet i tabellen ’varekatalog’ og vingårdene er listet i tabel ’vingaarde’ og endelig druenavne og deres synonymer er listet i tabellen ’druer’
Eksempel
Tabel varekatalog
Vinnavn Vingaard Druetype1 Druetype2 …. Druetype7
Okseblod 3 1 4 5
præstetanker 45 28 4
Den med tyren 56 3 7 3
Tabel vingaarde
id Vingaardnavn
1 Den lille farm
2 Chateaux Haux
Tabel druer
id druenavn
1 Merlot
2 Cabernet Sauvignon
Problem 1: jeg skal fra Tabel ’Varekatalog’ joine til både tabel ’vingaarde’ og tabel ’druer’.
Den første join til ’vingaarde’ virker fint med
strSQL1 = "Select * from Varekatalog (LEFT OUTER JOIN vingaarde on Varekatalog.vingaard=
vingaarde.id) WHERE udsolgt=FALSE order by varenr"
Nu skal jeg så også joine til tabel ’druer’, hvor varekatalog.druetype1 refererer til druer.druenavn. Hvis nu jeg ikke havde den første Join ovenfor kunne jeg skrive
strSQL2 = "Select * from Varekatalog (LEFT OUTER JOIN druer on Varekatalog.druetype1=
druer.id) WHERE udsolgt=FALSE order by varenr"
men nu skal de kombineres i én sql-sætning, og hvordan gør jeg det? Skal de 2 parenteser sidestilles med AND eller med komma eller med mellemrum ?? Altså
strSQL = ”Select * from varekatalog (parentes1) and (parentes2) where ….. eller en helt anden syntax?
Problem 2: Jeg har ikke ét felt i tabel ’varekatalog’ som joiner til druer – jeg har 7 felter, da en vin jo kan indeholde mange druer. Jeg har altså i tabellen Varekatalog felterne druetype1, druetype2, … druetype7 – og de skal alle joines til tabel druer. Jeg har gættet på at jeg blot i ”on”-sætningen skal skrive
on Varekatalog.druetype1=
druer.id, Varekatalog.druetype2=
druer.id, … Varekatalog.druetype7=
druer.id
Er det rigtigt med komma mellem de 7? Eller skal det være en anden syntaks?
Når jeg nu i min asp-kode skal hente druenavne, som står i feltet druenavn i tabellen druer, hvad gør jeg så? Hvis vi begrænser til at jeg gerne vil hente indholdet af druetype2 pe6, så er det jo ikke nok at skrive rs(”druenavn”) – jeg må jo på en eller anden måde indikere at det er druenavnet fra reference druetype2! Kan jeg skrive rs(”druetype2.druenavn”) eller rs(”druenavn.druetype2”) eller …?
Eller er der en helt nemmere løsning end join ?
Mvh.
Jens