webForumDet fria alternativet

SQL-fråga fungerar inte

Databaser & SQL

7 svar · 220 visningar · startad av PESforum.com

Medlem sedan jan. 200315 inlägg
Frågan#1

Följande SQL-fråga fungerar med Access men inte med mySQL, hur ska jag skriva om den för att det ska fungera???

strSQL = "SELECT TOP 1 tblThread.Thread_ID, tblThread.Message_date, tblThread.Topic_ID, tblAuthor.Username, tblAuthor.Author_ID " 

strSQL = strSQL & "FROM (tblForum INNER JOIN tblTopic ON tblForum.Forum_ID = tblTopic.Forum_ID) INNER JOIN (tblAuthor INNER JOIN tblThread ON tblAuthor.Author_ID = tblThread.Author_ID) ON tblTopic.Topic_ID = tblThread.Topic_ID "

strSQL = strSQL & "WHERE tblTopic.Forum_ID = " & intForumID & " "

strSQL = strSQL & "ORDER BY tblThread.Message_date DESC;"
Medlem sedan jan. 200315 inlägg
#2

Gick ej att redigera inlägget men här är en enklare kod:

strSQL = "SELECT TOP 1 tblThread.Thread_ID,
tblThread.Message_date, tblThread.Topic_ID,
tblAuthor.Username, tblAuthor.Author_ID "

strSQL = strSQL & "FROM (tblForum INNER JOIN tblTopic ON 
tblForum.Forum_ID = tblTopic.Forum_ID) INNER JOIN (tblAuthor INNER JOIN tblThread ON 
tblAuthor.Author_ID = tblThread.Author_ID) ON tblTopic.Topic_ID = tblThread.Topic_ID "

strSQL = strSQL & "WHERE tblTopic.Forum_ID = " & intForumID & " "

strSQL = strSQL & "ORDER BY tblThread.Message_date DESC;"
Medlem sedan dec. 200012 464 inlägg
#3
SELECT tblThread.Thread_ID, tblThread.Message_date, 
       tblThread.Topic_ID, tblAuthor.Username, tblAuthor.Author_ID
  FROM tblForum 
       INNER JOIN tblTopic 
    ON tblForum.Forum_ID = tblTopic.Forum_ID 
       INNER JOIN tblAuthor 
    ON tblAuthor.Author_ID = tblThread.Author_ID
       INNER JOIN tblThread 
    ON tblTopic.Topic_ID = tblThread.Topic_ID
 WHERE tblTopic.Forum_ID = 4711
 ORDER BY tblThread.Message_date DESC limit 1
Medlem sedan jan. 200315 inlägg
#4

Tack LarsG, orkar du med än till?

"Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[TCX][MyODBC]Okänd kolumn 'tblTopic.Forum_ID' i having clause

/Default.asp, line 302
"

strSQL = "SELECT Count(tblThread.Thread_ID) AS Thread_Count "

strSQL = strSQL & "FROM tblTopic INNER JOIN tblThread ON
 tblTopic.Topic_ID = tblThread.Topic_ID "

strSQL = strSQL & "GROUP BY tblTopic.Forum_ID "	

strSQL = strSQL & "HAVING (((tblTopic.Forum_ID)=" & intForumID & "));"
Medlem sedan dec. 200012 464 inlägg
#5

Det finns ingen anledning att använda having i detta läge. Tvärtom.

strSQL = "SELECT Count(tblThread.Thread_ID) AS Thread_Count "

strSQL = strSQL & "FROM tblTopic INNER JOIN tblThread ON
 tblTopic.Topic_ID = tblThread.Topic_ID "
strSQL = strSQL & " where tblTopic.Forum_ID =" & intForumID & " " 
strSQL = strSQL & "GROUP BY tblTopic.Forum_ID "

Jag blir förvånad över felmeddelandet dock. Kanske någon begränsning i Mysql att man bara kan använda kolumner som är med i select-listan i having.

Medlem sedan jan. 200315 inlägg
#6

Du är en ängel Lars G :)

Nu börjar det fungera!
Svara gärna på mitt PM eller så postar jag mina frågor här om du tycker det är bättre. Har en drös SQL-satser som ej fungerar :(

Medlem sedan juni 200032 967 inlägg
#7

Posta i SQL-forumet, då det finns fler än LarsG som kan SQL, eller åtminstone kan försöka hjälpa till.

Mvh,

Medlem sedan jan. 200315 inlägg
#8

Saken är den att det fungerar med Access dock inte mySQL =) Men okej :)

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)