Kom ihåg mig?
Home Menu

Menu


SQL sortera beroende på tråd och inlägg tid

Ämnesverktyg Visningsalternativ
Oläst 2012-08-28, 14:44 #1
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Standard SQL sortera beroende på tråd och inlägg tid

SELECT * FROM forum_threads WHERE forum = '{$forum_id}' ORDER BY date DESC

Sådär ser min query ut när jag hämtar alla trådar när jag är i ett forum.
Just nu sorterar jag dem på när de lades ut.

Men den skall också kunna sortera när senaste inlägget i trådarna gjordes.

Så den skall alltså sortera genom både trådens och inlägges tid samtidigt för att få allt rätt sorterat.

Vill gärna ha hjälp med detta för jag har sökt mycket men inte hittat något vettigt.
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-28, 14:51 #2
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Kod:
SELECT forum_posts.*, forum_threads.* FROM forum_posts, forum_threads WHERE forum_threads.id=forum_posts.parent AND forum_threads.id=$id ORDER BY forum_posts.postdate DESC
Inte 100% optimerad och du bör inte återanvända den rakt av.

Dessutom bör du inte spotta in den variabeln rakt av utan jag skulle snarare göra denna varianten, om du inte använder ett språk med prepared statements samt kontrollerar all din data.

PHP-kod:
$query 'SELECT forum_posts.*, forum_threads.* FROM forum_posts, forum_threads WHERE forum_threads.id=forum_posts.parent AND forum_threads.id=%d ORDER BY forum_posts.postdate DESC';
$query sprintf($query$id); 
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-28, 15:13 #3
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Det funkar inte eftersom när man gör trådar så läggs inget in i forum_posts och den där queryn sorterar bara efter datum på inlägg.

Om man gör en ny tråd ska den hamna högst upp även om man inte har några inlägg.
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-28, 15:23 #4
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Jag rekommenderar att i forum_threads har du enbart titel, skapare, skapad, id och så. Under forum_posts ska även det första inlägget vara.
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-28, 16:12 #5
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
då måste ju forum_posts ha en kolumn som hänvisar till raden i forum_threads.

och om man bara har gjort ett vanligt inlägg, skall den kolumnen vara = 0 då?
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-28, 18:42 #6
gooses avatar
goose goose är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2007
Inlägg: 451
goose goose är inte uppkopplad
Flitig postare
gooses avatar
 
Reg.datum: Jun 2007
Inlägg: 451
Du får göra en outer join så tar den med rader som inte har någon forumpost kopplad
goose är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-29, 17:48 #7
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Satt o leta på Google och hittade denna:
SELECT thread_id, MAX(date) AS MaxPostTime FROM forum_posts GROUP BY thread_id ORDER BY MaxPostTime DESC LIMIT 10

Är denna optimal? Alltså den kollar ju vilken tidstämpel som är den högsta och sorterat därefter. Det funkar bra och så men är det så man ska göra eller finns det bättre sätt?

Kan man typ göra såhär då:

SELECT *, MAX(date) AS MaxPostTime FROM ...

Så man får med alla kolumner men ändå sorterar?
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-08-29, 19:01 #8
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Här kommer en liten uppdatering:

SELECT forum_threads.*, forum_posts.date FROM forum_posts, forum_threads WHERE forum_threads.forum = '{$forum_id}' GROUP BY forum_threads.id ORDER BY forum_posts.date DESC

Det är min nuvarande query.

Här ser ni problemet: http://fuskbugg.se/dl/nYLmnh
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-15, 21:55 #9
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
Enklaste är ju att göra en till kolumn för forum_threads som heter något i stil med "latest_post_date" och när någon gör ett inlägg i en tråd så är det bara att köra en UPDATE `forum_threads` SET `latest_post_date`= nuvarande datum WHERE `thread_id` = tråden inlägget gjordes i"

Så är det ju sen bara att sortera efter latest_post_date sen, då behöver du inga joins, ingen GROUP BY, ingen tung query alls.

Visst kan det kännas onödigt att göra en update varje gång någon skriver ett inlägg men i förhållande till dom vägarna du försöker gå nu så det absolut inga som helt problem.

EDIT: Ojsan, denna tråden var visst flera veckor gamla, var ju nästan längst upp på första sidan så antog att den var ganska färsk, skrivs det så lite i "Serversidans teknologier" :S

Senast redigerad av JesperA den 2012-09-15 klockan 21:58
JesperA är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-15, 22:27 #10
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
är den här tråden en fortsättning på samma fråga?

http://www.wn.se/t1054831.html
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 08:02.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017