webForumDet fria alternativet

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

Databaser & SQLur Databashanterare & SQL

4 svar · 366 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 :)

132 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)