Hej,
Jag håller på och bygger om mitt forum. Samtidigt passar jag på att göra om SQL-koden då jag ändrat på den grundläggande designen i databasen.
För att förenkla SQL-koden har jag börjat använda mig av JOIN i mina uttryck. Jag tror att jag har förstått principen för hur de ska användas men jag får inte riktigt det resultat jag vill ha ändå.
Nuvarande SQL-sats:
SELECT t1.*, t2.threadID, t3.postID, t2.subject, t3.content, t3.posted, t3.postedbymemberID, t4.username,
(SELECT COUNT(threadID) FROM xtblforumthread AS t5 WHERE t5.forumID = t1.forumID) AS numberofthreads,
(SELECT COUNT(postID) FROM xtblforumpost AS t7 WHERE t7.threadID IN (SELECT t6.threadID FROM xtblforumthread AS t6 WHERE t6.forumID = t1.forumID)) AS numberofposts
FROM xtblforum AS t1
INNER JOIN xtblforumthread AS t2 ON t1.forumID=t2.forumID
INNER JOIN xtblforumpost AS t3 ON t3.threadID=t2.threadID
INNER JOIN tblmember AS t4 ON t4.memberID=t3.postedbymemberID
WHERE t1.forumcategoryID = $categoryID AND t2.forumID = t1.forumID AND t3.threadID = t2.threadID AND t1.visible = 1 AND t1.forumgroupID = ".$inline."
ORDER BY t1.displayorder, t3.posted DESC LIMIT 0,3";
SQL-koden anropas från en funktion som heter getForum($categoryID) som matas med den kategori som forumet tillhör. Funktionen skall då hämta ut samtliga forum som tillhör en viss kategori med de fält som finns först i SQL-frågan.
I xtblForum hämtar jag ut den information som hör direkt till ett visst forum. I samma fråga vill jag även ha ut information om vilket inlägg som är det senaste postade inlägget i forum samt användarID och användarnamn för den personen som skapat inlägget. Inläggen lagras i tabellen xtblforumpost.
Så här ser det ut i phpMyAdmin när jag kört ovanstående kod:
Se bild i slutet av dokumentet.
Jag vill ha ut samtliga forum under exempelvis kategori 1 med hjälp av JOIN-kommandot. I mitt fall borde det bli runt 8 forum. För varje forum vill jag få ut följande fält:
t1.*,
t2.threadID
t3.postID
t2.subject
t3.content
t3.posted
t3.postedbymemberID
t4.username
Hur ska jag förändra SQL-koden? :)
