Avatar billede martins Nybegynder
18. juni 2004 - 13:17 Der er 4 kommentarer og
1 løsning

SQL sætning søges

Hejsa eksperter

Jeg mangler et SQL-query som vælger alle poster fra en tabel hvor der skal opfyldes kriterier fra en anden.

Jeg har følgende tabeller:

Photos
Comments

Comments relateres gennem photos.id = comments.photo.

I tabellen comments har jeg et felt der hedder stars. Dette felt indeholder antal stjerner som er tildelt en kommentar og derfor også billedet.

Jeg skal så bruge alle de billeder fra photos som ikke har fået 2 kommentarer med 3 stjerner eller derover.

Håber der er en som kan hjælpe.
Avatar billede ferdinand.k Mester
18. juni 2004 - 13:35 #1
du ønsker alle alle records udskrevet med billeder der:
- ikke har 2 kommentarer
- 3 stjerner eller derover?
Avatar billede peter_hansen Nybegynder
18. juni 2004 - 14:17 #2
Det jeg ville gøre var at lave en betingelses sætning i stedet:

<%

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Sti/tildindatabase.mdb")

Conn.Open DSN

strSQL = "Select Photos.id From Photos"
Set Photos = Conn.Execute(strSQL)

If not Photos.EOF then

    do
        strSQL = "Select * From Commment Where comments.photo =" & Clng(Photos("id"))
        Set Comments = Conn.Execute(strSQL)
        If not Comments.EOF then
            do
                if Clng(Comments("Stars") > 2 then
                    nummer = nummer + 1
                    Comments.Movenext
                else
                    Comments.Movenext
                End if
            loop While not Comments.EOF
   
            If nummer < 2 then
                Resposen.write Photos("id")
        end if
    Nummer = 0
    Photos.Movenext
    Loop While Not Photos.EOF
End if

Conn.Close
Set Conn = Nothing
Set Photos = Nothing
Set Comments = Nothing
%>
Avatar billede peter_hansen Nybegynder
18. juni 2004 - 14:28 #3
Havde lige Glemt en End IF :-)

<%

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Sti/tildindatabase.mdb")

Conn.Open DSN

strSQL = "Select Photos.id From Photos"
Set Photos = Conn.Execute(strSQL)

If not Photos.EOF then

    do
        strSQL = "Select * From Commment Where comments.photo =" & Clng(Photos("id"))
        Set Comments = Conn.Execute(strSQL)
       
        If not Comments.EOF then
            do
                if Clng(Comments("Stars") > 2 then
                    nummer = nummer + 1
                    Comments.Movenext
                else
                    Comments.Movenext
                End if
            loop While not Comments.EOF
   
            If nummer < 2 then
                Response.write Photos("id")
              end if
          End if
         
        Nummer = 0
          Photos.Movenext
    Loop While Not Photos.EOF
End if

Conn.Close
Set Conn = Nothing
Set Photos = Nothing
Set Comments = Nothing
%>
Avatar billede martins Nybegynder
18. juni 2004 - 17:14 #4
Ferdinand > Jeg ønsker alle billeder som ikke har fået minimum 2x 3 stjerner. Et billede kan godt have 10 kommentarer, hvoraf der kun er 1 med stjerner vedhæftet. Derfor er de 2 kommentarer ikke et krav.

Peter_hansen > Er det korrekt opfattet af mig, at alle poster i tabellen "photos" vil blive løbet igennem ?
Avatar billede martins Nybegynder
23. august 2004 - 12:29 #5
lukker
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