Avatar billede emetico Nybegynder
20. december 2003 - 17:46 Der er 13 kommentarer og
1 løsning

Hvad skriver jeg galt? det er i mysql/asp

Hej jeg har 2 fejl på min side, men jeg fatter dem ikke.

den ene er min poll hvor jeg får fejl:

ADODB.Recordset.1 error '80004005'

SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'SELECT MAX(pid) FROM afstemning)' at line 1


/poll.asp, line 8

min poll.asp ved line 8 ser sådan her ud:

<%
    Response.Buffer = True
    PollID = Request.QueryString("PollID")
    If not PollID = 0 Then
        Set conntemp = Server.CreateObject("ADODB.Connection")
        conntemp.open DSN
        Set rsPoll = conntemp.Execute("SELECT * FROM afstemning WHERE pid = (SELECT MAX(pid) FROM afstemning)")
        If Request.Cookies("ABP_Poll")(PollID) = "voted" Then
            OptionID = False
        Else


Mit anden problem er mit forum, den kan godt vise de færste emner, men så kommer fejlen:

ADODB.Recordset.1 error '80004005'

SQLState: 42S22
Native Error Code: 1054
[TCX][MyODBC]Unknown column 'threads.fid' in 'having clause'


/forum.asp, line 61

min forum.asp ved line 61 ser sådan her ud:

SQL_TAEL_SVAR = "SELECT Count(replies.rid) AS AntalSvar "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "FROM threads INNER JOIN replies ON threads.tid = replies.tid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "GROUP BY threads.fid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "HAVING (((threads.fid) = "& ForumID &"))"
        Set rsAntalSvar = conntemp.Execute(SQL_TAEL_SVAR)
       
        If Not rsAntalSvar.EOF Then
          AntalSvar = CLng(rsAntalSvar("AntalSvar"))
        End If

Nogen der kan hjælpe mig ?
Avatar billede arne_v Ekspert
20. december 2003 - 18:10 #1
MySQL i current versioner understøtter mig bekendt ikke
  =(SELECT ...)
Avatar billede arne_v Ekspert
20. december 2003 - 18:11 #2
Jeg mener at felter i HAVING skal være i SELECT listen.

Prøv med WHERE i.s.f. HAVING.
Avatar billede emetico Nybegynder
20. december 2003 - 18:23 #3
kan du forklare dig lidt nærmere ?
med hensyn til select..

jeg udskiftede WHERE med HAVING og fik sådan set samme fejl:

ADODB.Recordset.1 error '80004005'

SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'WHERE (((threads.fid) = 4))' at line 1


/forum.asp, line 61

min nøjagtige line 61 er:

Set rsAntalSvar = conntemp.Execute(SQL_TAEL_SVAR)

;-(

min poll line 8 er:

Set rsPoll = conntemp.Execute("SELECT * FROM afstemning WHERE pid = (SELECT MAX(pid) FROM afstemning)")
Avatar billede arne_v Ekspert
20. december 2003 - 18:29 #4
Hvorfor har du iøvrigt en GROUP BY på samme felt som en HAVING/WHERE ?

GROUP BY burde helt kunne undlades.

Jeg kan ikke helt gennemskue hvad fejlen er. Prøv og fjern GROUP BY,
prøv igen og post execute og de 4 linier før hvis det stadig ikke virker.
Avatar billede arne_v Ekspert
20. december 2003 - 18:30 #5
Med hensyn til SELECT så mener jeg simpelthen ikke at MySQL
understøtter SELECT inden i expressions.
Avatar billede emetico Nybegynder
20. december 2003 - 18:35 #6
så får jeg denne fejl, samt den slet ikke viser nogen forums nu hehe:

ADODB.Recordset.1 error '80004005'

SQLState: 42S22
Native Error Code: 1054
[TCX][MyODBC]Unknown column 'threads.fid' in 'having clause'


/forum.asp, line 59

min execute plus 4 linjer før kommer her :

        SQL_TAEL_SVAR = "SELECT Count(replies.rid) AS AntalSvar "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "FROM threads INNER JOIN replies ON threads.tid = replies.tid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "GROUP BY threads.fid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "HAVING (((threads.fid) = "& ForumID &"))"
        Set rsAntalSvar = conntemp.Execute(SQL_TAEL_SVAR)

det er så med group by på.
Avatar billede arne_v Ekspert
20. december 2003 - 18:37 #7
http://www.mysql.com/doc/en/Subqueries.html

den relevante del er:

Starting with version 4.1, MySQL supports all subquery forms and operations which the SQL standard requires
Avatar billede emetico Nybegynder
20. december 2003 - 18:37 #8
jeg har brugt select i alle mine dokumenter, du er velkommen til at kigge et smut på siden det er http://www.n8rden.dk
Avatar billede arne_v Ekspert
20. december 2003 - 18:38 #9
Prøv med:

        SQL_TAEL_SVAR = "SELECT Count(replies.rid) AS AntalSvar "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "FROM threads INNER JOIN replies ON threads.tid = replies.tid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "WHERE threads.fid = "& ForumID
        Set rsAntalSvar = conntemp.Execute(SQL_TAEL_SVAR)
Avatar billede arne_v Ekspert
20. december 2003 - 18:39 #10
Ja selvfølgelig bruger du SELECT.

SELECT F FROM T;

er OK - problemet er:

SELECT F1 FROM T1 WHERE F2 = (SELECT F2 FROM T2);
Avatar billede emetico Nybegynder
20. december 2003 - 18:42 #11
HTTP Error 507
507 Unexpected

The Web server encountered an unexpected error while communicating with the ASP service.

Please contact the server's administrator if this problem persists

det er den nye fejl jeg får når jeg sætter det ind ;(
Avatar billede emetico Nybegynder
20. december 2003 - 18:44 #12
okay her er hele mit forum.asp:

<!--#include file="includes/conn.asp"-->
<!--#include file="includes/functions.asp"-->
<!--#include file="includes/autologin.asp"-->
<!--#include file="includes/top.asp"-->
<%
    Response.Write "                        <td width=""60%"" height=""440"" valign=""top"" align=""center"">"& vbCrLf
  AntalEmner = 0
  AntalSvar = 0

  Set conntemp = Server.CreateObject("ADoDB.Connection")
  conntemp.open DSN
  SQLFORUMS = "SELECT * FROM forum_kats AS Kat "
  SQLFORUMS = SQLFORUMS & "INNER JOIN forums AS UKat "
  SQLFORUMS = SQLFORUMS & "ON Kat.kid = UKat.kid "
  SQLFORUMS = SQLFORUMS & "ORDER BY Kat.kid, UKat.f_navn"
  Set rsForums = conntemp.execute(SQLFORUMS)

    If Not (rsForums.BOF or rsForums.EOF) Then
        Response.Write "              <table style=""border: 1 solid #000000"" border=""0"" cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">"& vbCrLf &_
        "                <tr>"& vbCrLf &_
        "                  <td width=""100%"" bgcolor=""#3399FF"" class=""NormTxt"" align=""center""><b>.: Forum :.</b></td>"& vbCrLf &_
        "                </tr>"& vbCrLf &_
        "              </table>"& vbCrLf
        Do While Not rsForums.EOF
            If rsForums("k_navn") <> OldCat Then
                Response.Write "              <table style=""border: 1 solid #000000"" border=""0"" cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">"& vbCrLf &_
                "                <tr>"& vbCrLf &_
                "                  <td width=""100%"" class=""HeadTxt""><b>"& rsForums("k_navn") &"</b></td>"& vbCrLf &_
                "                </tr>"& vbCrLf &_
                "              </table>"& vbCrLf &_
                "              <table bgcolor=""#66CCFF"" style=""border: 1 solid #000000"" border=""0"" cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">"& vbCrLf &_
                "                <tr>"& vbCrLf &_
                "                  <td width=""50%"" class=""NormTxt""><b>Forum</b></td>"& vbCrLf &_
                "                  <td width=""30%"" class=""NormTxt"" align=""center""><b>Nyeste Indlæg</b></td>"& vbCrLf &_
                "                  <td width=""10%"" class=""NormTxt"" align=""center""><b>Emner</b></td>"& vbCrLf &_
                "                  <td width=""10%"" class=""NormTxt"" align=""center""><b>Svar</b></td>"& vbCrLf &_
                "                </tr>"& vbCrLf &_
                "              </table>"& vbCrLf
            End If
     
            AntalEmner = Null
      AntalSvar = Null
            KatID =    CInt(rsForums("kid"))
      ForumID = CInt(rsForums("fid"))
      ForumNavn = rsForums("f_navn")
      ForumBeskrivelse = rsForums("beskrivelse")

      SQL_TAEL_EMNER = "SELECT Count(threads.fid) AS AntalEmner "
      SQL_TAEL_EMNER = SQL_TAEL_EMNER & "FROM threads "
      SQL_TAEL_EMNER = SQL_TAEL_EMNER & "WHERE threads.fid = " & ForumID & " " 
      SQL_TAEL_EMNER = SQL_TAEL_EMNER & "GROUP BY threads.fid "
      Set rsAntalEmner = conntemp.Execute(SQL_TAEL_EMNER)

      If Not rsAntalEmner.EOF Then
        AntalEmner = CLng(rsAntalEmner("AntalEmner"))

        SQL_TAEL_SVAR = "SELECT Count(replies.rid) AS AntalSvar "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "FROM threads INNER JOIN replies ON threads.tid = replies.tid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "GROUP BY threads.fid "
        SQL_TAEL_SVAR = SQL_TAEL_SVAR & "HAVING (((threads.fid) = "& ForumID &"))"
        Set rsAntalSvar = conntemp.Execute(SQL_TAEL_SVAR)
       
        If Not rsAntalSvar.EOF Then
          AntalSvar = CLng(rsAntalSvar("AntalSvar"))
        End If

        SQL_FIND_NYESTE_SVAR = "SELECT fid, uid, dato, tme, brugernavn "
        SQL_FIND_NYESTE_SVAR = SQL_FIND_NYESTE_SVAR & "FROM replies WHERE fid = "& ForumID &" "
        SQL_FIND_NYESTE_SVAR = SQL_FIND_NYESTE_SVAR & "ORDER BY dato, tme DESC LIMIT 0, 1"
        Set rsFindNyesteSvar = conntemp.execute(SQL_FIND_NYESTE_SVAR)

        If Not rsFindNyesteSvar.EOF Then
          NyesteSvarUsrID = CLng(rsFindNyesteSvar("uid"))
          NyesteSvarDato = rsFindNyesteSvar("dato")
          NyesteSvarTid = rsFindNyesteSvar("tme")
          NyesteSvarBrugernavn = rsFindNyesteSvar("brugernavn")
                    NyesteSvarDatoTid = NyesteSvarDato &" "& NyesteSvarTid
        End If
       
        SQL_FIND_NYESTE_EMNE = "SELECT fid, uid, dato, tme, brugernavn "
        SQL_FIND_NYESTE_EMNE = SQL_FIND_NYESTE_EMNE & "FROM threads WHERE fid = "& ForumID &" "
        SQL_FIND_NYESTE_EMNE = SQL_FIND_NYESTE_EMNE & "ORDER BY dato, tme DESC LIMIT 0, 1"
        Set rsFindNyesteEmne = conntemp.execute(SQL_FIND_NYESTE_EMNE)

        If Not rsFindNyesteEmne.EOF Then
          NyesteEmneUsrID = CLng(rsFindNyesteEmne("uid"))
          NyesteEmneDato = rsFindNyesteEmne("dato")
          NyesteEmneTid = rsFindNyesteEmne("tme")
          NyesteEmneBrugernavn = rsFindNyesteEmne("brugernavn")
                    NyesteEmneDatoTid = NyesteEmneDato &" "& NyesteEmneTid
        End If
       
        rsFindNyesteEmne.Close : Set rsFindNyesteEmne = Nothing
      End If
            Response.Write "              <table bgcolor=""#66CCFF"" style=""border-bottom: 1 solid #000000;border-left: 1 solid #000000;border-right: 1 solid #000000"" border=""0"" cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">"& vbCrLf &_
            "                <tr>"& vbCrLf &_
            "                  <td width=""50%"" class=""NormTxt""><a href=""emner.asp?fid="& ForumID &"&kid="& KatID &""">"& ForumNavn &"</a><br><span class=""SmallTxt"">"& ForumBeskrivelse &"</span></td>"& vbCrLf &_
            "                  <td width=""30%"" class=""NormTxt"" align=""center"">"& vbCrLf
            If NyesteSvarDatoTid > NyesteEmneDatoTid And AntalEmner > 0 Then
                Response.Write NyesteSvarDato &"<br><a href=""vis_bruger.asp?uid="& NyesteSvarUsrID &""">"& NyesteSvarBrugernavn &"</a>"
            ElseIf NyesteSvarDatoTid < NyesteEmneDatoTid And AntalEmner > 0 Then
                Response.Write NyesteEmneDato &"<br><a href=""vis_bruger.asp?uid="& NyesteEmneUsrID &""">"& NyesteEmneBrugernavn &"</a>"
            Else
                Response.Write "Ingen indlæg"
            End If
            Response.Write "                                        </td>"& vbCrLf &_
            "                  <td width=""10%"" class=""NormTxt"" align=""center"">"& vbCrLf
            If AntalEmner > 0 Then
                Response.Write AntalEmner
            Else
                Response.Write "0"
            End If
            Response.Write "                                        </td>"& vbCrLf &_
            "                  <td width=""10%"" class=""NormTxt"" align=""center"">"& vbCrLf
            If AntalSvar > 0 Then
                Response.Write AntalSvar
            Else
                Response.Write "0"
            End If
            Response.Write "                                        </td>"& vbCrLf &_
            "                </tr>"& vbCrLf &_
            "              </table>"& vbCrLf
            OldCat = rsForums("k_navn")
            rsForums.MoveNext
        Loop
    End If
    rsForums.Close
    Set rsForums = Nothing
    Response.Write "                </td>"& vbCrLf
%>
<!--#include file="includes/bottom.asp"-->
<% Response.End %>
Avatar billede emetico Nybegynder
20. december 2003 - 19:51 #13
synes selv jeg har prøvet alt nu, så alle forslag er velkommen ;-)
Avatar billede emetico Nybegynder
25. december 2003 - 21:53 #14
fandt ud af det ;-)
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
Computerworld tilbyder specialiserede kurser i database-management

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