webForumDet fria alternativet

INNER JOIN i Access (konvertering av existerande SQL-sträng)

Databaser & SQL

4 svar · 368 visningar · startad av Grillcliff

Medlem sedan sep. 200032 inlägg
Frågan#1

Hej,

Jag vet inte vad som är felet med följande kod, men jag får Too few parameters. Expected 1.

<% Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & strPath
Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT t.topic, p.topicid, t.datum, MAX(p.datum) AS last_post FROM forum_topics t INNER JOIN forum_posts p ON p.topicid = t.id GROUP BY t.id, t.topic, p.topicid, t.datum ORDER BY last_post"
RS.Open SQL, Conn, 1, 3 %>

Detta har tidigare körts med MySQL och nu tänkte jag använda samma funktion med en Access-databas.

Medlem sedan dec. 200012 464 inlägg
#2

En brist i Access

 SQL = "SELECT t.topic, p.topicid, t.datum, MAX(p.datum) AS last_post FROM forum_topics t INNER JOIN forum_posts p ON p.topicid = t.id GROUP BY t.id, t.topic, p.topicid, t.datum ORDER BY 4"

Varför har du med t.id i group by men inte i select-listan? (Bara nyfiken.)

Medlem sedan sep. 200032 inlägg
#3

Okej, det där var ett klart intressant problem. Givetvis funkade det, men jag förstår inte logiken ;-)

t.id-grejen var nog mest slarv efter att jag suttit och försökt fixa det på egen hand genom att strippa ner strängen så mycket som möjligt.

Tack för hjälpen!

Medlem sedan dec. 20003 887 inlägg
#4

last_post är kolumn nummer 4 i din SELECT och Access klarar inte av att använda kolumnalias i ORDER BY.

Medlem sedan sep. 200032 inlägg
#5

All right :)

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)