Visa ett inlägg
Oläst 2013-01-31, 11:21 #5
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Jag tänkte även förklara lite hur jag tänkt när jag löste problemet.

Grundprincipen är att dela upp ett stort problem i sina atomära beståndsdelar. Det var ju från början två olika tabeller och man vill ha ut senaste datum grupperat på threadid i var och en av dessa två tabeller.

För att hämta ut senaste datum från threads-tabellen så behöver man skriva så här:
Kod:
SELECT threadid, MAX(createddate) AS senastedatum from wn.threads
GROUP BY threadid
För att få ut senaste datum från posts-tabellen skriver man så här:
Kod:
SELECT threadid, MAX(created)  AS senastedatum from wn.posts
GROUP BY threadid

Sen vill vi bara ha ut det senaste av dessa sammanslagna tabeller och då slår man bara ihop dessa tabeller med en UNION:
Kod:
SELECT threadid, MAX(createddate) AS senastedatum from wn.threads
GROUP BY threadid

UNION 

SELECT threadid, MAX(created)  AS senastedatum from wn.posts
GROUP BY threadid

Men då får vi fler rader per thread och det vill vi inte ha utan endast ett datum per thread. Då behöver vi göra ytterligare en gruppering. Men Group By funkar bara på EN tabell så vi måste först skapa en enda tabell av denna UNION-statement, vi ger tabellen ett alias som 'x':
Kod:
SELECT *
FROM
(
    SELECT threadid, MAX(createddate) AS senastedatum from wn.threads
    GROUP BY threadid

    UNION 

    SELECT threadid, MAX(created)  AS senastedatum from wn.posts
    GROUP BY threadid
) x

Och sen gör vi bara en gruppering och bakvänd sortering på hela kalaset, så var det fixat, lätt som en plätt:
Kod:
SELECT threadid, MAX(senastedatum) as senastedatum
FROM
(
	SELECT threadid, MAX(createddate) AS senastedatum from wn.threads
	GROUP BY threadid

	UNION 

	SELECT threadid, MAX(created)  AS senastedatum from wn.posts
	GROUP BY threadid
) x
GROUP BY threadid
ORDER BY senastedatum DESC;

Senast redigerad av Conny Westh den 2013-01-31 klockan 11:27
Conny Westh är inte uppkopplad   Svara med citatSvara med citat