Jag har en liten wiki där jag behöver få fram den senast ändrade sidan. Varje wikisida är kopplad till en viss version. Såhär ser datastrukturen ut (generellt):
wikipages.pageid är kopplad med wikirevisions.pageid.
När man exempelvis går in på sidan "Startsida" (wikipages.title = 'Startsida'), körs därefter en extra sql-fråga som hämtar senaste versionen (postdate DESC) från wikirevisions som innehåller den senaste versionen av sidan.
Jag har försökt med något i stil med nedanstående fråga för att hämta en enkel lista över senast ändrade sidor, men det fungerar ju icke.
SELECT
title, postdate
FROM
wikipages
INNER JOIN wikirevisions ON
wikirevisions.pageid = wikipages.pageid
GROUP BY
wikirevisions.pageid
ORDER BY
postdate DESC
Eller kanske det är så att jag måste skapa ett extra fält (wikipages.revisionid) där jag lagrar vilken version som är den aktuella?
select title, hwpr.content
from wikipages wp join wikirevisions lwpr on wp.pageid = lwpr.pageid
join wikirevisions hwpr on lwpr.pageid = hwpr.pageid
and lwpr.postdate < hwpr.postdate
group by title, hwpr.content
having count(*) = 1
select title, hwpr.content
from wikipages wp join wikirevisions lwpr on wp.pageid = lwpr.pageid
join wikirevisions hwpr on lwpr.pageid = hwpr.pageid
and lwpr.postdate <[u][b][red]=[/red][/b][/u] hwpr.postdate
group by title, [u]lwpr[/u].content
having count(*) = 1
Annars visas inte de sidor som enbart har en (1) version.
r) Ytterligare korrigering inlagd (hwpr --> lwpr).
Jo, det fungerade utmärkt (med lite modifikation). :e
SELECT
title, hwpr.postdate, hwpr.changes, name
FROM
wiki_pages wp
JOIN
wiki_pagerevisions lwpr ON wp.pageid = lwpr.pageid
JOIN
wiki_pagerevisions hwpr ON lwpr.pageid = hwpr.pageid AND lwpr.postdate [red]<=[/red] hwpr.postdate
INNER JOIN
users ON users.userid = hwpr.userid
GROUP BY
title, lwpr.[red]postdate[/red]
HAVING COUNT(*) = 1
ORDER BY
[red]postdate DESC[/red]
LIMIT 20