Har följande SQL-sats för att hämta trådar i ett forum, projektet jag nu tagit mig ansvar för använder dock MySQL som databas, och jag har upplevt småproblem med andra SQL-satser p.g.a. det, så jag antar att problemet här också är att det är skrivet för Access, men jag försöker köra det i MySQL. :)
LarsG, eller någon annan, hur gör man för att skriva satsen för MySQL? :e
sql_select_threads = "select f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id," & _
" max(iif(f2.thread_date is null,f1.thread_date,f2.thread_date)) " & _
" from forum_threads f1 left outer join forum_threads f2 " & _
" on f1.thread_id = f2.thread_reply_id " & _
" where f1.thread_reply_id = 0 " & _
" group by f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id" & _
" order by 7 desc"
Argh! Vill ni ha något att bita i? Ni borde i och försig inte ha problem med detta, så bra ni kan detta, men men, jag får inte till det, så jag förklarar problemet och så får vi se om ni fattar hur en SQL-sats skall se ut till den. :)
Jag har olika kategorier (nej sorterade inte via kategorier i den tidigare SQL-frågan, men det ska vara olika kategorier) i ett forum, och i dessa skall givetvis olika trådar hämtas. Sorteringen har ni väl räknat ut, men det ska iallafall sortera efter senaste trådposten, men även efter senaste posten i en tråd, så om en tråd är nypostad skall den ligga högst i forumet, men samtidigt skall en tråd "hoppa upp" om den får ett svar i den.
Följande fält från databasen skall hämtas:
[b]thread_id[/b] - trådens unika ID
[b]thread_name[/b] - rubriken på tråden
[b]thread_author_name[/b] - skaparens namn
[b]thread_author_id[/b] - skaparens ID
[b]thread_text[/b] - själva inlägget/tråden
[b]thread_category[/b] - vilken kategori den tillhör
[b]thread_reply_id[/b] - om det är en tråd, är värdet här noll, om det är ett svar är värdet trådens ID, så det är denna som kopplar ihop hela alltet!
[b]thread_date[/b] - datum
Allt eftersom kommer fler värden att hämtas, typ som om tråden är av högre prioritet eller låst, men det ska jag nog kunna hämta ut själv, bara jag fattar hur jag ska få det hela att fungera först. :)
Tror det var allt, kanske någon vänlig själ kan skriva ihop en fin liten SQL-sats som fungerar till mitt forum! :D
Saken är den att jag inte ens vet om själva SQL-satsen var korrekt om jag hade haft Access, då det är ett klipp och klistra-jobb jag gjort från en tidigare sida som är ett år gammal eller nåt, och därför höll jag inte reda på vilka tabeller som var vad osv.
Men visst. :) Detta får jag av @nders:
Microsoft OLE DB Provider for ODBC Drivers error '80040e31'
Column 'thread_reply_id' in field list is ambiguous
/forum_category.asp, line 102
Anledingen till felmeddelandet är att thread_reply_id tillhör både f1 och f2. Med andra ord måste du tala om från vilken av tabellerna kolumnen skall hämtas. Testa detta:
sql_select_threads = "select f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, f2.thread_reply_id," & _
" max(coalesce(f2.thread_date, f1.thread_date)) AS lastPostDate" & _
" from forum_threads f1 left outer join forum_threads f2 " & _
" on f1.thread_id = f2.thread_reply_id " & _
" where f1.thread_reply_id = 0 " & _
" group by f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, f2.thread_reply_id" & _
" order by lastPostDate desc"