join men få stadig "grund"-data med
Jeg har i spm http://eksperten.dk/spm/535503 søgt efter noget hjælp til at konstruere en SQL-sætning af svær grad og har selv kommet frem til noget der er meget tæt på et fungerende bud.Problemet ligger i at ved JOIN på [tracking]-tabellen, er det ikke sikkert at der er nogle rows, dvs at rows fra [A.threads] tabellen der ikke har en "partner" heri, bliver ikke udskrevet.
Håber det giver mening... :-)
Her er mit foreløbige SQL:
SELECT A.threadID, A.threadParent, A.threadForum, A.threadGroup, A.threadTitle, A.threadUser,
A.threadDateTime, MAX(B.threadDateTime) AS MaxOfDate, C.trackStamp,
IF(MAX(B.threadDateTime) > C.trackStamp, 1, 0) AS trackOld
FROM threads A
LEFT JOIN threads B ON B.threadParent = A.threadID
RIGHT JOIN tracking C ON C.trackThread = A.threadID
WHERE C.trackThread = A.threadID AND C.trackUser = 'navn'
GROUP BY A.threadGroup ORDER BY trackOld DESC, MaxOfDate DESC, A.threadDateTime ASC
som det fremgår skal [threads]-tabellen joine sig selv for at finde childrens via threadParent feltet, og samtidigt skal vi finde ud af om brugeren til netop denne threadID er i tracking-tabellen.
Og som nævnt er problemet, at findes de ikke her kommer rækkerne ikke med i udtrækket, men det vil jeg gerne have de gør alligvel!
Sub-selects er pt ikke en mulighed, og vil kun forsøge denne vej hvis det er et must.
