Kom ihåg mig?
Home Menu

Menu


SQL gruppera icke

Ämnesverktyg Visningsalternativ
Oläst 2009-11-30, 22:50 #1
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Pettolajnen Pettolajnen är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 217
Standard SQL gruppera icke

Jag bygger en mail/pm-funktion. När man som användare klickar på "Mail" i menyn så ska man då komma till en översikt över ens mailkonversationer. Jag vill alltså inte att det bara ska ligga ens senaste mail efter datumordning. Utan jag vill att ens olika konversationer ska visas där sorterade efter senast mottagna inlägg inom en konversation. En konversation är alltså ungefär som en kanal i en chatt.

Här är ett exempel på hur en mail-index kan se ut:

Richard, 22 år | Visa konversation | 5 inägg | senast mottaget: idag
Jenny, 27 år | Visa konversation | 2 inlägg | senast mottaget: igår
Sara, 20 år | Visa konversation | 43 inlägg | senast mottaget: igår


Jag sparar alla inlägg/mail i en tabell som heter "mail" med följande kolumner:

mail_id
parent_id
from_user_id
to_user_id
content
sent_datetime
read_datetime
read

Hur ska jag hämta ut så det blir listat enligt mitt ovanstående exempel? Hur ska queryn se ut? Tycker den är rätt svår asså. Suttit och funderat men komme rinte fram till nått, därför jag frågar här.
Pettolajnen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-01, 08:00 #2
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
Citat:
Ursprungligen postat av Pettolajnen Visa inlägg
Jag bygger en mail/pm-funktion. När man som användare klickar på "Mail" i menyn så ska man då komma till en översikt över ens mailkonversationer. Jag vill alltså inte att det bara ska ligga ens senaste mail efter datumordning. Utan jag vill att ens olika konversationer ska visas där sorterade efter senast mottagna inlägg inom en konversation. En konversation är alltså ungefär som en kanal i en chatt.

Här är ett exempel på hur en mail-index kan se ut:

Richard, 22 år | Visa konversation | 5 inägg | senast mottaget: idag
Jenny, 27 år | Visa konversation | 2 inlägg | senast mottaget: igår
Sara, 20 år | Visa konversation | 43 inlägg | senast mottaget: igår


Jag sparar alla inlägg/mail i en tabell som heter "mail" med följande kolumner:

mail_id
parent_id
from_user_id
to_user_id
content
sent_datetime
read_datetime
read

Hur ska jag hämta ut så det blir listat enligt mitt ovanstående exempel? Hur ska queryn se ut? Tycker den är rätt svår asså. Suttit och funderat men komme rinte fram till nått, därför jag frågar här.
Du måste gruppera, på from_user_id, sedan tar du ut MAX(sent_datetime) och sorterar enligt detta samt omvandlar till "igår" osv
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-01, 14:06 #3
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Kod:
SELECT id_sum - 3, n_messages, last_time 
FROM 
    (SELECT
         (from_user_id + to_user_id) AS id_sum,
         COUNT(1) AS n_messages,
         MAX(sent_datetime) AS last_time
     FROM mail 
     WHERE from_user_id = 3 OR to_user_id = 3 GROUP BY id_sum) AS convos;
Där 3 ID på personen vars konversationer du letar efter. Problemet med allstars approach är att om man bara grupperar på from_user_id så räknas bara de meddelanden som skickats från den personen och inte de meddelanden som man skickat till den personen.
Bjorne ä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 19:51.

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