Avatar billede j-b-l Nybegynder
27. oktober 2001 - 14:34 Der er 9 kommentarer og
1 løsning

SQL forespørgelse på flere tabeller

Hej...

Er der en der kan fortælle mig hvor det går galt her...

Hvis jeg forespørger på Firstname returneres det rigtige antal poster, men forespørger jeg på Surname eller OriginalTitle returneres alle kombinationer af de forskellige tabellers rækker...

Her er koden:
-------------


\' Opbygger dynamisk SQL streng
strSQL = \"SELECT ARTIST.ArtistID, ARTIST.Surname, ARTIST.Firstname, ARTWORK.ArtworkID, ARTWORK.OriginalTitle, ARTWORK.Year, ARTWORK.Size, GENRE.Genre, MEDIA.Media FROM ARTIST, ARTWORK, ARTIST_ARTWORK, MEDIA, GENRE WHERE ARTIST.ArtistID=ARTIST_ARTWORK.ArtistID AND ARTWORK.ArtworkID=ARTIST_ARTWORK.ArtworkID AND ARTWORK.MediaID=MEDIA.MediaID AND ARTWORK.GenreID=GENRE.GenreID AND\"
strSQL = strSQL & \" (ARTIST.Firstname LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (ARTIST.Surname LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (ARTWORK.OriginalTitle LIKE \'%\" & strKeyword & \"%\')\"

\' Skaber forbindelse til databasen
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"\\smidud\\db\\Image.mdb\")

\' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    \' Hvis der er fundet poster på søgningen
    Response.Write \"<p>Result of your search</p>\"
    Response.Write \"<table width=70% border=0 cellspacing=0 cellpadding=3>\"
        Do While Not rs.EOF
    Response.Write \"<tr><td>\" & rs(\"Firstname\") & \"</td>\"
    Response.Write \"<td>\" & rs(\"Surname\") & \"</td>\"
    Response.Write \"<td><a href=\'details.htm?art=\" & rs(\"ArtworkID\")&\"\'>\" & rs(\"OriginalTitle\") & \"</a></td>\"
    Response.Write \"<td>\" & rs(\"Year\") & \"</td>\"
    Response.Write \"<td>\" & rs(\"Media\") & \"</td>\"
    Response.Write \"<td>\" & rs(\"Genre\") & \"</td></tr>\"
    rs.MoveNext
    Loop
    Response.Write \"</table>\"
------------------------------------------------------

Jeg kan forestille mig at sql\'en skal indeholde en form for JOIN, men kan ikke komme videre...

50 point på højkant :-)
Avatar billede eagleeye Praktikant
27. oktober 2001 - 14:42 #1
Jeg tror ikke helt jeg forstår hvad du skriver men. Du bruger samme strKeyword til at søge med!

strSQL = strSQL & \" (ARTIST.Firstname LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (ARTIST.Surname LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (ARTWORK.OriginalTitle LIKE \'%\" & strKeyword & \"%\')\"

Hvis du i strKeyword skriver A så finde den alle hvor \"A\" indgår i enten
Firstname, eller
Surname, eller
OriginalTitle
Avatar billede j-b-l Nybegynder
27. oktober 2001 - 15:02 #2
Forstår det heller ikke helt selv...den sql der foreligger burde virke, men er HELT NY i asp, så det kan godt være det er der det går galt.

Lige nu er der 7 kunstnere i databasen, der hver har malet et par billeder. De har malet med forskellige medier (olie, akvarel, tusch, etc), og maler i forskellige stilarter (surrealisme, abstrakt, impressionistisk etc.)

Henry Heerup er en af kunstnerne, og søger jeg på Henry finder forespørgelsen de rigtige 3 poster frem. Søger jeg på Heerup finder den alle poster frem i alle mulige kombinationer. Nu har Heerup både malet det ene og det andet billede, endda med flere forskellige medier og indenfor flere forskellige genrer.

Har fået hjælp til søgestrengen, og herefter blot kopieret den og smidt OR ind for at lave en fritekstsøgning...det kan meget vel være her det går galt...som sagt er helt bottomline nybegynder

Kan du fortælle mig hvordan jeg løser problemet
?-)

Avatar billede j-b-l Nybegynder
27. oktober 2001 - 15:55 #3
Er der andre der kan hjælpe mig ?
Avatar billede Slettet bruger
27. oktober 2001 - 17:00 #4
Det er nemt at stirre sig blind på andres SQL-strenge :)
Når du bruger Access kan du f.eks. bruge Query-funktionen (forespørgsler i den danske udgave). Den er god til at lave SQL-sætninger med.
Avatar billede j-b-l Nybegynder
27. oktober 2001 - 17:12 #5
Ja jeg ved det godt :-)
Prøver dit forslag med at få access til at bygge noget sql...synes bare at den ofte genererer de mystiske sætninger...
Avatar billede Slettet bruger
27. oktober 2001 - 17:14 #6
Ja, men hvis jeg skal kunne lave det for dig, skal jeg bruge din database og vide præcist hvad du skal have hevet ud af den. Du kan bare sende den hvis jeg skal gøre det. Min mail står under min profil. Det samme gør mit ICQ #.
Avatar billede j-b-l Nybegynder
27. oktober 2001 - 17:22 #7
Ok, roder lige selv lidt med det...hvis det går helt i hårknude vil jeg meget gerne have du kigger på det ;-)
Avatar billede Slettet bruger
28. oktober 2001 - 12:35 #8
Hej Jesper!
Så har jeg kigget på det. Din SQL-streng så god nok ud. Jeg har lagt det jeg har lavet her:
http://www.magik.dk/image/
Så må du jo vurdere om det er det du skal bruge :)
Avatar billede j-b-l Nybegynder
28. oktober 2001 - 17:01 #9
Hej Magik,

Mange, mange tak for hjælpen. Du har bragt mig meget videre.

Som jeg nævnte i min mail leder jeg stadig efter Stress programmer, så hvis du går efter en \"bonus\" er jeg parat til at kaste yderligere 50 point til Jylland.

Skriv lige tilbage, om jeg skal oprette et nyt spørgsmål om dette

Jesper
Avatar billede Slettet bruger
28. oktober 2001 - 20:06 #10
Tak for points Jesper :)
Kender ikke selv umiddelbart noget til stress programmer, men jeg kan lige forhøre mig imorgen. Så skal jeg nok lige kontakte dig.
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