Vonbo Skrevet 17. april 2006 Del Skrevet 17. april 2006 Hei, Nå har jeg prøvd meg frem og tilbake med diverse spørringer, men klarer ikke å få en spørring som: velger raden NAVN_ID distinct hvor TIMESTAMP er høyest... Her er tabellen: CREATE TABLE `thread_anw` ( `ID` int(11) NOT NULL auto_increment, `NAVN_ID` int(11) NOT NULL default '0', `TIMESTAMP` int(11) default '0', PRIMARY KEY (`id`) ) Dette må da være mulig? Jeg ville trodd denne skulle fungere: SELECT distinct(thread_nr) FROM `meet_thread_anw` ORDER BY timestamp DESC men den sorterer veldig rart, og setter ikke den høyeste timestampen øverst.... Noen som har forslag? Lenke til kommentar
roac Skrevet 17. april 2006 Del Skrevet 17. april 2006 Sånn umiddelbart, ikke noe annet enn å bytte datatype på feltet timestamp til, nettopp timestamp, og ikke minst å endre navnet på dette feltet til noe beskrivende (som ikke er et reservert ord). Lenke til kommentar
Vonbo Skrevet 17. april 2006 Forfatter Del Skrevet 17. april 2006 (endret) kan ikke se at å endre datatype skal endre noe her. Det er jo i bunn og grunn samme prinsipp uansett hvilken type feltet har. Skal prøve å si det enkelt: Høyeste verdi i TIMESTAMP innenfor hvert NAVN_ID skal hentes med spørringen. Det funker ikke å endre til distinct(TIMESTAMP), for da får jeg samtlige rader i tabell igjen ettersom alle er forskjellige, også de med lik NAVN_ID, og jeg ønsker kun å sitte igjen med den siste raden (hvert NAVN_ID's høyeste timestamp) for hver bruker. Endret 17. april 2006 av Vonbo Lenke til kommentar
Kirikiri Skrevet 17. april 2006 Del Skrevet 17. april 2006 Mulig du må gjøre en subquery på dette. Litt psuedokode - utestet: Select distinct(Navn_ID) as myName from mytable mt1 where timestamp in (select max(timestamp) from mytable mt2 where mt2.navn_id = mt1.MyName) Sjekk denne tråden fra Remove duplicate data within every month fra newsgroupen Microsoft.public.sqlserver.programming. Muligens litt overkill, men da kan du kanskje få et par hint om hvordan du må gjøre det. Kirikiri Lenke til kommentar
roac Skrevet 17. april 2006 Del Skrevet 17. april 2006 kan ikke se at å endre datatype skal endre noe her. Det er jo i bunn og grunn samme prinsipp uansett hvilken type feltet har. Skal prøve å si det enkelt: Høyeste verdi i TIMESTAMP innenfor hvert NAVN_ID skal hentes med spørringen. Det funker ikke å endre til distinct(TIMESTAMP), for da får jeg samtlige rader i tabell igjen ettersom alle er forskjellige, også de med lik NAVN_ID, og jeg ønsker kun å sitte igjen med den siste raden (hvert NAVN_ID's høyeste timestamp) for hver bruker. 5938011[/snapback] Du refererer til to forksjellige tabeller i innleggene dine, men jeg antar at dette er det du er ute etter: SELECT thread_nr, max(timestamp) FROM `meet_thread_anw` GROUP BY thread_nr DESC Lenke til kommentar
Vonbo Skrevet 17. april 2006 Forfatter Del Skrevet 17. april 2006 (endret) nå nærmer det seg løsningen her.. Beklager forvirringen med referanser til 2 tabeller. Var et forsøk på å gjøre det oversiktelig, men glemte litt... Uansett.. Den siste spørringen din roac var nesten det jeg er ute etter. Dvs det var akkurat de resultatene jeg var ute etter, men nå sorteres de etter thread_nr. Jeg vil ha timestamp sortert i DESC, altså høyeste verdi av timestamp først med tilhørende thread_nr. Jeg ville trodd det skulle fungere å tilføye ORDER BY timestamp DESC på slutten slik: SELECT thread_nr, max(timestamp) FROM `meet_thread_anw` GROUP BY thread_nr DESC ORDER BY timestamp DESC men det blir ikke store endringer. Hvordan kan jeg få disse samme resultatene bare men sortert slik at thread_nr med høyest timestamp komme øverst? Endret 17. april 2006 av Vonbo Lenke til kommentar
Vonbo Skrevet 17. april 2006 Forfatter Del Skrevet 17. april 2006 nå fant jeg løsningen her.. det siste problemet nå var rett og slett bare at kolonnenavnet til timestamp er blitt til max(timestamp), og jeg kan derfor ikke sortere etter bare timestamp. Jeg kan heller ikke si ORDER BY max(timestamp) ettersom funksjonen MAX kalles på ny. Men ved å gi kolonnen nytt navn til stamp kan jeg sortere etter denne. SELECT thread_nr, max(timestamp) AS stamp FROM `meet_thread_anw` GROUP BY thread_nr DESC ORDER BY stamp DESC Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå