Hejsan! Jag förstår inte varför du använder en subquery... Jo, visst funkar den. Den tar dock mycket längre tid att utföra än den jag skrivit. Fast kanske är så att jag får stå ut med längre exekveringstid. Eller? Utgå ifrån forum_forums och gör en left join på forum_entries istället. Då får du alla villkoren utom ett i where-satsen, vilket troligen blir bra mycket snabbare. Hmm... fast då missar jag ju de forumkategorier som inte har några inlägg i sig väl? > Hmm... fast då missar jag ju de forumkategorier som inte har några inlägg i sig väl? EntryID och ForumID ligger som PRIMARY index på inläggstabellen och ForumID som PRIMARY på forum-tabellen.Skriva om SQL-sats
Jag har en SQL-sats där jag använder mig av mig av subqueries, men som ska användas på en MySQL server som ej stöder detta. Jag har försökt att skriva om den till olika typer av join, men jag får den inte lika snabb.
Nån som orkar ta en titt och komma med förslag? Det är en funktion för att lista olika kategorier i ett forum där jag räknar ut antalet inlägg i ett forum och senaste inläggets datum. Fråga om ni inte förstår hur det är upplagt, inte så svårt dock.
SELECT f.Name, f.Info, COUNT(e.ForumID) AS Counted, CONCAT('forum_tree.aspx?id=',f.ForumID) AS Link, IFNULL(MAX(e.LastReplyDate),'0001-01-01') AS LastReplyDate FROM (SELECT ForumID, PhoneID, LastReplyDate FROM forum_entries WHERE ReplyThread = 0) AS e RIGHT JOIN forum_forums AS f ON e.ForumID = f.ForumID AND e.PhoneID = 0 GROUP BY f.ForumID ORDER BY f.Name
Tack på förhand!
/DanneSv: Skriva om SQL-sats
Duger inte denna lika bra?SELECT f.Name, f.Info, COUNT(e.ForumID) AS Counted, CONCAT('forum_tree.aspx?id=',f.ForumID) AS Link, IFNULL(MAX(e.LastReplyDate),'0001-01-01') AS LastReplyDate
FROM forum_entries AS e
RIGHT JOIN forum_forums AS f
ON ReplyThread = 0 AND e.ForumID = f.ForumID AND e.PhoneID = 0
GROUP BY f.ForumID ORDER BY f.Name
Sv:Skriva om SQL-sats
/DanielSv: Skriva om SQL-sats
Sv:Skriva om SQL-sats
/DanneSv: Skriva om SQL-sats
Nej.
Att göra en right join mellan tabell B och A är samma sak som att göra en left join mellan tabell A och B.Sv:Skriva om SQL-sats
/Danne