Avatar billede axkris Nybegynder
04. december 2003 - 22:36 Der er 6 kommentarer og
1 løsning

Column: 'TOPIC_ID' in field list is ambiguous

Hej

Ved eksekvering får jeg: "Column: 'TOPIC_ID' in field list is ambiguous". Hvorfor?


'## Forum_SQL - Find all records with the search criteria in them
strSql = "SELECT DISTINCT C.CAT_STATUS, C.CAT_NAME, C.CAT_ORDER"
strSql = strSql & ", F.F_ORDER, F.FORUM_ID, F.F_SUBJECT, F.CAT_ID, F.F_PRIVATEFORUMS"
strSql = strSql & ", F.F_PASSWORD_NEW, F.F_STATUS"
strSql = strSql & ", T.TOPIC_ID, T.T_AUTHOR, T.T_SUBJECT, T.T_STATUS, T.T_LAST_POST"
strSql = strSql & ", T.T_LAST_POST_AUTHOR, T.T_REPLIES, T.T_UREPLIES, T.T_VIEW_COUNT"
strSql = strSql & ", M.MEMBER_ID, M.M_NAME, MEMBERS_1.M_NAME AS LAST_POST_AUTHOR_NAME "

strSql2 = " FROM ((((" & strTablePrefix & "FORUM F LEFT JOIN " & strActivePrefix & "TOPICS T"
strSql2 = strSql2 & " ON F.FORUM_ID = T.FORUM_ID) LEFT JOIN " & strActivePrefix & "REPLY R"
strSql2 = strSql2 & " ON T.TOPIC_ID = R.TOPIC_ID) LEFT JOIN " & strMemberTablePrefix & "MEMBERS M"
strSql2 = strSql2 & " ON T.T_AUTHOR = M.MEMBER_ID) LEFT JOIN " & strTablePrefix & "CATEGORY C"
strSql2 = strSql2 & " ON T.CAT_ID = C.CAT_ID) LEFT JOIN " & strMemberTablePrefix & "MEMBERS MEMBERS_1"
strSql2 = strSql2 & " ON T.T_LAST_POST_AUTHOR = MEMBERS_1.MEMBER_ID"

strSql3 = " WHERE (T.T_STATUS > 1 OR R.R_STATUS > 1)"
if mlev = 3 and ModOfForums <> "" then
    strSql3 = strSql3 & " AND T.FORUM_ID IN (" & ModOfForums & ") "
end if

strSql4 = " ORDER BY C.CAT_ORDER, C.CAT_NAME, F.F_ORDER, F.F_SUBJECT, T.T_LAST_POST DESC"

mypage = request("whichpage")
if ((Trim(mypage) = "") or (IsNumeric(mypage) = False)) then mypage = 1
mypage = cLng(mypage)

if strDBType = "mysql" then 'MySql specific code
    if mypage > 1 then
        intOffset = cLng((mypage-1) * strPageSize)
        strSql5 = strSql5 & " LIMIT " & intOffset & ", " & strPageSize & " "
    end if

    '## Forum_SQL - Get the total pagecount
    strSql1 = "SELECT COUNT(TOPIC_ID) AS PAGECOUNT "
   
    response.write "<br>Webmaster er klar over fejlen<br>"
    response.write strSql1 & strSql2 & strSql3
    set rsCount = my_Conn.Execute(strSql1 & strSql2 & strSql3)
    iPageTotal = rsCount(0).value
    rsCount.close
    set rsCount = nothing
Avatar billede axkris Nybegynder
04. december 2003 - 22:38 #1
For resten, udskrivningen af sql'en er:

SELECT COUNT(TOPIC_ID) AS PAGECOUNT FROM ((((FORUM_FORUM F LEFT JOIN FORUM_TOPICS T ON F.FORUM_ID = T.FORUM_ID) LEFT JOIN FORUM_REPLY R ON T.TOPIC_ID = R.TOPIC_ID) LEFT JOIN FORUM_MEMBERS M ON T.T_AUTHOR = M.MEMBER_ID) LEFT JOIN FORUM_CATEGORY C ON T.CAT_ID = C.CAT_ID) LEFT JOIN FORUM_MEMBERS MEMBERS_1 ON T.T_LAST_POST_AUTHOR = MEMBERS_1.MEMBER_ID WHERE (T.T_STATUS > 1 OR R.R_STATUS > 1)
Avatar billede erikjacobsen Ekspert
04. december 2003 - 22:39 #2
strSql1 = "SELECT COUNT(TOPIC_ID) AS PAGECOUNT "

velsagtens. Måske kan du nøjes med COUNT(*), ellers må du sige om den
kommer fra R eller T
Avatar billede billen Nybegynder
04. december 2003 - 22:41 #3
Det er fordi du åbenbart har en kolonne ved navn TOPIC_ID i flere af de tabeller, som du benytter. Jeg kan ikke umiddelbart sige, hvilken en, men hvis du nu vil counte alle Topics i Forum_Topics, så skal du skrive COUNT(T.TOPIC_ID)
Avatar billede axkris Nybegynder
04. december 2003 - 22:47 #4
Hej begge

Sikke en præcision :D

Jeg har brugt så langt til på at stirre mig blind på fejlen.

Nu virker det. Tryk svar :D
Avatar billede erikjacobsen Ekspert
04. december 2003 - 22:50 #5
never mind point - det var så nemt
Avatar billede axkris Nybegynder
04. december 2003 - 22:52 #6
Men hvis det er så nemt :-D kan du så ikke lige spare mig for endnu flere timers stirren på skærmen ;-)

http://www.eksperten.dk/spm/436153
Avatar billede axkris Nybegynder
04. december 2003 - 22:53 #7
Man så tager jeg da dem sæl :D
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