[mysql] Hämta data ur flera tabeller

Permalänk
Medlem

[mysql] Hämta data ur flera tabeller

Jag har tre tabeller (förenklat):
Jag har tre tabeller (väldigt förenklat):
* forumStructure (forumID, forumTitle)
* forumThreads (forumID, threadID, threadID)
* forumPosts (threadID, postID, time)

Jag försöker få fram alla forumdelar (forumStructure) samt vilken tråd som har den senaste posten i varje forum.

Någon som har föslag?

Permalänk
Legendarisk

Alla forumdelar är jag inte riktigt med på, men en effektiv lösning för senaste post är att lagra information om senaste inlägg i trådtabellen och senaste tråd i forumtabellen, och sedan uppdatera de värdena när man skriver/raderar inlägg eller trådar.

Visa signatur

Abstractions all the way down.

Permalänk
Medlem

man bör göra som biber säger.

Men annars kan du väl göra nån subquery....

select s.*, (select MAX(id) from forumThreads where parentId = s.id) from forumStructure s

Typ så borde funka... Jag är precis påväg att sova och har varken tid eller ork att testa.

Permalänk
Medlem

Fast då försvinner ju själva tanken med relationsdatabaser. Det måste gå på något sätt...

Permalänk
Medlem

du kan säkert köra en typ

LEFT JOIN MAX(id) ON parentId=s.id

(antar att du vet hur joins fungerar, googla annars)

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av totoo
du kan säkert köra en typ

LEFT JOIN MAX(id) ON parentId=s.id

(antar att du vet hur joins fungerar, googla annars)

Jo, jag vet. Det är någon form av JOIN jag behöver, så mycket vet jag. Följande har jag kommit fram till, men här är inte forumdelarna (forumStructure) med.

SELECT ft.threadTitle, fp.postID FROM forumThreads ft LEFT JOIN (SELECT threadID, postID, time FROM forumPosts ORDER BY postID DESC) fp ON fp.threadID = ft.threadID GROUP BY ft.threadID ORDER BY fp.time