webForumDet fria alternativet

Visa senaste inlägget i ett forum

Databaser & SQL

9 svar · 671 visningar · startad av henkz

Medlem sedan apr. 2002183 inlägg
Frågan#1

Jag skulle vilja kunna lista trådarna efter datum. Som det är nu hamnar nyaste tråden överst inte nyaste inlägget i densamma..

Koden nedan har jag försökt få ihop med hjälp av andra inlägg, men det fungerar inte för mig..

Felkod:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 
[MySQL][ODBC 3.51 Driver][mysqld-4.0.23-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select max(xdatum) from forum where parent='1'),xdatum) as orde

forumdisplay.asp, rad 108

Rad 108: Set RS = conn.Execute(strSQL)

Db: MySQL 4.0.23

strSQL="select id,rubrik,left(msg,200),user,userid,status,visad,xdatum,coalesce((select max(xdatum) from forum where parent='"&fid&"'),xdatum) as orderDate from forum t order by orderDate desc"
Medlem sedan dec. 200012 464 inlägg
#2
select f1.id,f1.rubrik,left(f1.msg,200),f1.user,f1.userid,
f1.status,f2.visad,f1.xdatum,
coalesce(f1.xdatum,max(f2.xdatum)) as orderDate
  from forum f1
  left join forum f2 on f2.parent = f1.id
  where f1.parent is null
  group by f1.id,f1.rubrik,left(f1.msg,200),f1.user,f1.userid,
       f1.status,f2.visad,f1.xdatum
order by orderDate desc
Medlem sedan apr. 2002183 inlägg
#3

Den körs utan felmeddelande, men inga trådar listas.

Jag bifogar nuvarande sqlsträng som fungerar ,UTAN rätt sortering

strSQL = "SELECT id,rubrik,left(msg,200),user,userid,status,visad,xdatum FROM forum Where parent='"&fid&"' and trad='0' ORDER BY xdatum Desc"
Medlem sedan dec. 200012 464 inlägg
#4

Din fråga är ointressant. Det som betyder något är hur tabellen är definierad och kolumnvärdenas innebörd.

Jag gissade lite hur det hänger, t.ex. att det första inlägget i en tråd har null i kolumnen parent och att senare inlägg har id-värdet från det första inlägget i den kolumnen.

Om detta inte stämmer så får du beskriva hur det hänger ihop.

Medlem sedan apr. 2002183 inlägg
#5

inte riktigt så.. Egentligen har forumet flera steg. Samma struktur som detta forumet. Jag har valt att lägga de två sista stegen i en egen tabell.

Head och parent tillhör en annan tabell. När jag kommer till detta steg har jag med mig unikaid från parent tabellen : "&fid&"

Den ska då välja alla inlägg där parent= "&fid&" och trad=0

Vet inte om du förstår min dåliga beskriving.. Kan PM länken om du hellre vill se..

TABELLSTRUKTUR
id (int-räknare)
rubrik (varchar)
msg (varchar)
head (int)
parent (int)
trad (int)
status (int)
userid (int)
user (varchar)
visad (int)
xdatum (datetime)

Medlem sedan apr. 2002183 inlägg
#6

Nu kommer jag inte längre..

denna kod ger samma resultat som den första koden jag använde. Den listar nyskapade trådar överrst, den sorterar inte via inläggen i tråden.

strSQL = "select f1.id,f1.rubrik,left(f1.msg,200),f1.user,f1.userid,
f1.status,f2.visad,f1.xdatum,
coalesce(f1.xdatum,max(f2.xdatum)) 
as orderDate from forum f1 left join forum f2 on
 f2.trad = f1.id where f2.parent= '"&fid&"' 
group by f1.id,f1.rubrik,left(f1.msg,200),f1.user,f1.userid, 
f1.status,f2.visad,f1.xdatum order by orderDate desc"
Medlem sedan apr. 2002183 inlägg
#7

ingen som kan ge lite tips?

Behövs det mer info för att ni kan hjälpa?

Medlem sedan apr. 2002183 inlägg
#8

Löste det själv..

Medlem sedan juni 200032 967 inlägg
#9

Då passar det väl alldeles utmärkt att posta din lösning här?

Medlem sedan apr. 2002183 inlägg
#10

Visst kan jag det..

strSQL = "SELECT rot.id, rot.rubrik, left(rot.msg,200), rot.user, rot.userid, rot.status, rot.visad, rot.xdatum, 
IFNULL(MAX(trad.xdatum), rot.xdatum) AS txdatum 
FROM forum AS rot LEFT JOIN forum AS trad ON rot.id=trad.trad 
WHERE rot.trad='0' AND rot.parent='"&fid&"' AND rot.head='"&parent&"' GROUP BY rot.id ORDER BY txdatum Desc"
339 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
210 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)