BrimbaMedlem sedan dec. 19995 875 inlägg Jag försöker göra en enkel join, men den säger dumma saker till mig hela tiden :(
...
FROM
Threads t1
LEFT JOIN (select max(id) from Threads where parentID = t1.id) t3 ON t1.id = t3.id
...
sql skrev:
The column prefix 't1' does not match with a table name or alias name used in the query.
Varför då? Jag har ju t1 där, det ser jag ju jättetydligt...
LarsGMedlem sedan dec. 200012 464 inlägg Nej, det är ju klart att den klagar. T1 ligger utanför den härledda tabellens synfält.
Du får nog beskriva lite mer vad du vill och så-
BrimbaMedlem sedan dec. 19995 875 inlägg Jag har en tabell "Threads".
kolumner
--------------------
id
parentID
först hämtar jag alla id där parentID är null, sedan vill jag joina in det id som är störst där parentID är samma som id.
Det skulle vara enkelt med en subquery i selectsatsen men jag vill inte göra så.
exempelvis
id parentID
1 null
2 1
3 1
4 null
nu vill jag med min select få ut följande:
id id_x
1 3
4 null
där id_x då är max(id) där parentID är 1 (id)
Hoppas det beskriver mitt problem :)
LarsGMedlem sedan dec. 200012 464 inlägg Varför skulle du få med
4 null
och inte
1 null
?
och varför vill du inte använda subselect?
LarsGMedlem sedan dec. 200012 464 inlägg select max(id),parentid from
(select id from threads where parentid is null) dt
left join threads on dt.id = parentid
group by parentid
BrimbaMedlem sedan dec. 19995 875 inlägg eftersom parentID har värdet 1 i sig, medan det inte finns någon post som har parentID 4. Då skall den bli null, annars skall den hämta det id som har max(id) där id = parentID.
BrimbaMedlem sedan dec. 19995 875 inlägg Anledningen till att jag inte vill använda subselect är att jag vill kunna göra det på olika sätt.