Kom ihåg mig?
Home Menu

Menu


SQL-fundering

Ämnesverktyg Visningsalternativ
Oläst 2008-02-28, 19:39 #1
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Ur en tabell skulle jag ha ut ett gäng rader med hjälp av en outer join och en group by. Det relevanta som skiljer sig mellan de enskilda grupperade raderna är ID och en tids / datum-märkning. Eftersom jag endast ville ha den senaste raden ur varje grupp så körde jag en separat gruppering av en dubblett på den berörda tabellen där jag plockade ut max(ID) och sedan vanlig inner join mot den andra kopian, går det att göra på annat vis?
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-29, 09:41 #2
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Vilken rad i varje grupp är det som mysql väljer när man grupperar resultat? Det är den första raden, alltså den som blev inlagd först, eller om du sorterar tabellen, efter den sortering som blir inom varje grupp. För att slippa sortera om raderna eller bygga om tabellen kan man gå över en temporär tabell, ungefär såhär:
select * from( (select * from tabell order by x) as t1) group by y.
Hoppas det var ungefär det du undrade över.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-29, 09:58 #3
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Mjo, det är ungefär så jag gör nu, undrade mest om man kan slippa en subquery och temporär tabell. Group by plockar ju som du säger alltid ut den första raden oavsett sortering, vore bra om man kunde tvinga den att plocka ut den sista direkt istället.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-29, 11:23 #4
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Det är nog så här man får göra.

Manualen ger inget hopp heller:


http://dev.mysql.com/doc/refman/5.1/en/exa...-group-row.html

Om grupperingskriterierna är konstanta så kan du kan ju alltid lägga till ett event som uppdaterar en tabell som enbart innehåller den sist skapade raden i varje grupp. Kräver att uppdateringarna är få jämfört med läsningarna för att det ska var någon poäng.
Magnus_A ä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 14:48.

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