Min kod fungerar inte riktigt. Det finns totalt tre svar på inlägget som gjorts. Men bara två av dom visas. Om jag väljer RIGHT JOIN istället för LEFT JOIN så verkar den förstå att det finns tre svar, men hämtar inte uppgifterna från re (ForumReplys). Men den skriver ut det tredje svaret ändå.
SELECT re.*,
us.Username AS Username,
us.ID AS UserID,
us.Picture
FROM Users us
LEFT JOIN ForumReplys AS re ON re.UserID = us.ID
and re.ThreadID = $ThreadID
ORDER BY DateAdded DESC,
TimeAdded DESC
Users:
ID (Int(255))
Username (Text)
Picture (Text)
Jag vill helt enkelt skriva ut svar på en tråd i ett forum. Användarnamn (Username), ID (ID) och bild (Picture) ska hämtas från Users. Och kopplas ihop med svaret (Reply), tid (TimeAdded) och datum (DateAdded) från ForumReplys.
Det finns tre svar på en tråd, de två första skrivs ut korrekt. Men den tredje skrivs bara ut med bild och användarnamn. Alltså saknas svaret, tid och datum på när svaret skrevs (från ForumReplys).
Det verkar som den hämtar information från antingen ForumReplys tabellen eller från Users tabellen beroende på om jag skriver LEFT JOIN eller RIGHT JOIN. Vad ska man skriva för att information ska hämtas från båda tabellerna? :)
RIGHT JOIN så hämtar den från ForumReplys.
LEFT JOIN så hämtar den från Users.
SELECT re.*,
us.Username AS Username,
us.ID AS UserID,
us.Picture
FROM
ForumReplys AS re INNER JOIN Users us ON re.UserID = us.ID
and re.ThreadID = $ThreadID
ORDER BY DateAdded DESC,
TimeAdded DESC
Finns det ForumReplies som inte har några användare? Då
SELECT re.*,
us.Username AS Username,
us.ID AS UserID,
us.Picture
FROM
ForumReplys AS re LEFT JOIN Users us ON re.UserID = us.ID
WHERE re.ThreadID = $ThreadID
ORDER BY DateAdded DESC,
TimeAdded DESC