Kom ihåg mig?
Home Menu

Menu


Group By problem

Ämnesverktyg Visningsalternativ
Oläst 2007-12-21, 20:45 #1
nakna nakna är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2005
Inlägg: 22
nakna nakna är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2005
Inlägg: 22
Har lite strul med en sql fråga

jag har ett forum där varje tråd får ett id i tagellen threads, sen i tabellen posts ligger alla inläggen. Nu vill jag ha första inlägget i varje tråd men problemet är att jag får sista inlägget i tråden.

sql satsen ser ut såhär:
select threads.timestamp, posts.subject, posts.post_id, threads.thread_id from threads, posts where threads.thread_id = posts.thread_id and forum_id = '2' group by threads.thread_id order by threads.timestamp desc, posts.post_id;

jag får trådarna i rätt ordning men det sista inlägget i tråden hamnar i 'subject'

Kan någon se vad jag gjort för fel innan jag :wacko:
nakna är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-21, 22:24 #2
nakna nakna är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2005
Inlägg: 22
nakna nakna är inte uppkopplad
Nykomling
 
Reg.datum: Mar 2005
Inlägg: 22
Fick till det själv, men det känns väldigt omständigt

Kod:
select threads.timestamp as last_comment, threads.thread_id, count(posts.thread_id)-1 as svar, (SELECT subject FROM posts WHERE posts.thread_id = threads.thread_id order by posts.post_id Limit 1) as subject, (SELECT userid FROM posts WHERE posts.thread_id = threads.thread_id order by posts.post_id Limit 1) as u_id from threads , posts 
where threads.thread_id = posts.thread_id and forum_id = '2' 
group by threads.thread_id order by threads.timestamp desc;
Om någon ser något som går att optimera så hojta gärna till!
nakna är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-21, 23:02 #3
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
MAX(timestamp) som urvalskriterie för grupperingen?
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-22, 01:06 #4
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
Hmm... jag borde sova så jag kanske tänker fel, men vad får du för resultat med

Kod:
select threads.timestamp, posts.subject, posts.post_id, threads.thread_id 
from threads, posts 
where threads.thread_id = posts.thread_id and forum_id = '2' 
group by threads.thread_id 
order by threads.timestamp desc, posts.post_id [B]desc[/B];
Det är lite jobbigt att skapa en databas att provköra i
jonny är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-22, 09:47 #5
coredevs avatar
coredev coredev är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2007
Inlägg: 1 554
coredev coredev är inte uppkopplad
Bara ett inlägg till!
coredevs avatar
 
Reg.datum: Sep 2007
Inlägg: 1 554
Du löser det med en inner-sql fråga, samt group-by funktionen min:

select threads.timestamp, posts.subject, posts.post_id, threads.thread_id from threads, posts where threads.thread_id = posts.thread_id and forum_id = '2' and posts.id in (select min(id) from posts group by thread_id) order by threads.timestamp desc;

Eftersom jag inte har tillgång till din db, får du se det som pseudo-kod
coredev ä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 00:32.

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