26. maj 2004 - 22:24
Der er
12 kommentarer og 1 løsning
Vælge fire poster
Hej, Umiddelbart lyder det jo meget let, men den er en smule mere kringlet. Min tabel ser således ud: id, int(6) unsigned, primary key, auto_increment headline, varchar(150) category, tinyint(1) date, datetime category kan antage værdien 1, 2, 3 eller 4 Det jeg så ønsker er at hente den nyeste record fra hver enkelt category, dvs. den nyeste record hvor værdien af category er 1, den nyeste record hvor værdien af category er 2 osv. I alt fire records. Hvordan gør man det med en enkelt SELECT?
Annonceindlæg fra Context&
SELECT MAX(date),category FROM tabel GROUP BY category vil returnere nyeste indlæg i kategorierne, men du vil jo nok gerne have resten af felterne med ...
Hihi, det var jo såre simpelt :) Så kan man lære at tænke sig om lidt bedre.. Smid et svar :)
Rigeligt :) Det var hvad man kalder en tanketorsk fra min side.
Ahaa, nu kan jeg se hvad du mente om det var nok :) De resterende felter er jo ikke nødvendigvis de rigtige. Har du en smart måde at løse dette på?
ID kan hentes med: SELECT MAX(id),MAX(date),category FROM tabel GROUP BY category problemet er headline. Hvilken version af MySQL bruger du ?
4.0.12 kører min udbyder..
Kunne man måske lave en innerjoin på den samme tabel og på den måde komme frem til det rigtige resultat?
Problemet er nemt at løse i MS SQLServer og MySQL 4.1.x, men det er et problem i MySQL 3.x og 4.0.x ...
Hmmm, så er jeg vist nødsaget til at bruge to queries og først hente headline ud i anden omgang, eller hvad siger du?
En pragmatisk løsning vil muligvis være: SELECT MAX(id),MAX(CONCAT(date,headline)),MAX(date),category FROM tabel GROUP BY category og så lade din applikation (PHP elle rhvad det nu er) fjerne den første del af anden kolonne [utestet !]
Du kan altid bruge med: SELECT headline FROM tabel WHERE id = x til at finde den headline som matcher til en given række fra 23:29:10 forslaget
Jeg kigger på det. Mange tak fordi du gav dig tid til det.
Computerworld tilbyder specialiserede kurser i database-management