Hej! Håller på att koda ett forum i OO PHP, och har kört fast ganska rejält i en SQL-sats. Varför sortera innan och varför fungerar inte "ORDER BY Posts.Created DESC"? Om du använder Mysql så tror jag inte join funkar är inte säker men. Tror man brukar koppla ihop tabbeler med where-uttrycket SQL: Sortera innan JOIN
Queryn i fråga används för att hämta information om trådarna att visas på förstasidan, listan på det trådar som finns alltså. Grejen är att jag har trådarnas data, såsom antal läst, rubrik o.s.v, i en taebll, medan alla poster finns i en annnan. Och i trådlistan vill jag visa vem som senast postade i en tråd, och när det gjordes. För att 'merga' ihop dessa tabller har jag gjort följande query:
Tjoo.. Har kört fast totalt, Daft, ni är min enda räddning! Och er egen dessutom, är nämligen PHPDaft det gäller.
Såhär: Två tabeller. Den ena där data om en tråd lagras, och varje tråd har ett unikt ID, och den andra där alla poster lagras, tillsammans med ett TrådID och ett annat ID. Grejen är att det här andra ID't bara är unikt i varje tråd, och inte i hela tabellen. Alltså kan man inte använda det som primary key...
Nu ska jag skriva ut trådlistan på förstasidan. Då vill man ju, föutom att skriva ut trådens data, dessutom skriva ut senaste posts skapare o dyl. Försökte därför med denna sats:
SELECT Threads.UserName, Threads.UserID, Threads.Reads, Threads.Posts, Threads.ID, Threads.Rubrik,
Posts.UserName, Posts.UserID, Posts.Created, Posts.ID FROM Threads LEFT JOIN Posts ON Threads.ID = Posts.ThreadID GROUP BY Posts.ThreadID
Det fungerar som jag vill, förutom en liten detalj: posten som följer med tråden blir inte den senaste, utan den första, den med PostID 1. Det jag vill göra är alltså att sortera datan i respektive tabell _innan_ den mergas med den andra, för lägger man till en ORDER BY-klausul i slutet så sorteras bara det färidga resultatet av mergen. Har trots mycket letande och meckande inte hittat någon lösning, kanske finns det någon daftare som sitter inne med svaret? Eller några tips iaf. Eller en liten uppigande kommentar?? ;P
Mkt tacksam
// Kung den Knege (Eli Kaufman) Sv: SQL: Sortera innan JOIN
/HMLSv: SQL: Sortera innan JOIN
tex.
SELECT Threads.UserName, Threads.UserID, Threads.Reads, Threads.Posts, Threads.ID, Threads.Rubrik,
Posts.UserName, Posts.UserID, Posts.Created, Posts.ID FROM Threads,Posts Where Threads.ID = Posts.ThreadID
GROUP BY Posts.ThreadID