13. august 2003 - 22:23
Der er
23 kommentarer og 2 løsninger
SQL - distinct sortere efter count
Er det muligt at lave en sql sætning der opfylder følgene krav. 1. skal bruge distinct på kollonen "file" så kun forskellige poster returneres 2. skal sorterer efter hvor mange poster der er med hver unik post så hvis jeg har følgende tabel nedenunder: file col2 col3 ------------------------------- fil2 kasj asn fil3 lasnd akl fil1 lasjd lasd fil3 ndsa kajsdn fil2 lasm las fil1 asd asd fil2 asd asd fil2 asd asd fil1 asd asd så giver det følgende output fil2 (da den har flest counts) fil1 (da den har næstflest) fil3 (da den har mindst counts)
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
13. august 2003 - 22:26
#1
select file,count(*) from <tabel> group by file order by count(*) desc;
13. august 2003 - 22:31
#2
SELECT file, count(*) AS hits FROM tabel GROUP BY file ORDER BY hits DESC;
13. august 2003 - 22:32
#3
tipsen>> det ligner vist hinanden :-)
13. august 2003 - 22:32
#4
ehh jeg får en fejl! Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/pub/ftpstats.php on line 124 linie 124 består af: while ($row = mysql_fetch_array($result)) { echo $row["file"]; } min $result ser sådan ud $result = mysql_query("select file,count(*) from xfer_stats group by file order by count(*) desc");
13. august 2003 - 22:33
#5
tipsen virkede.. men de ser da ens ud????
13. august 2003 - 22:33
#6
lav alias (as hits) og samme i order by - som tipsen skrev - formentlig kan php ikke "tåle" en kolonne med navnet count(*)
13. august 2003 - 22:36
#7
okay.. hvae skal jeg dele points? group - den har jeg adrig brugt før hvad gør den helt præcist?
13. august 2003 - 22:37
#8
COUNT() er en operation, hvilket ikke er lovligt at bruge i et ORDER BY statement i MySQL (eller Ansi SQL for den sags skyld)
13. august 2003 - 22:37
#9
group by laver "grupperinger" efter de felter der angives.
13. august 2003 - 22:38
#10
ok, i oracle er det tilladt - men de overholder jo også ansi-sql (næsten :-)
13. august 2003 - 22:38
#11
13. august 2003 - 22:38
#12
altså den fungerer lidt ligesom distinct?
13. august 2003 - 22:38
#13
læs: grupperinger = opsummeringsniveau
13. august 2003 - 22:39
#14
ja, lidt ligesom distinct
13. august 2003 - 22:39
#15
Du kan give mig 10 point for mine kommentarer, så er det fint med mig.
13. august 2003 - 22:40
#16
en mulig fejl i sql: følgende 2 rækker tæller 2 gange: fil1 asd asd fil1 asd asd
13. august 2003 - 22:40
#17
-hvilket selvfølgelig kræver et svar...
13. august 2003 - 22:41
#18
-hvorfor mener du at ovenstående er en fejl?
13. august 2003 - 22:43
#19
Hvis du ønsker at tælle antallet af distincte records, så er dette kun 1 - og ikke 2, hvorimod hvis du ønsker at tælle antallet af gange, en værdi er repræsenteret i kolonnen "file", så er den korrekt. citat: "skal sorterer efter hvor mange poster der er med hver unik post" - en uniq post gælder hele posten/rækken, og ikke alene 1. kolonne.
13. august 2003 - 22:45
#20
ahh min fejl den sætning jeg fik af jer er det jeg søger :) så det er bare fjong
13. august 2003 - 22:46
#21
det var godt - det andet tror jeg ikke ville være helt simpelt (uden lidt "gris" :-)
13. august 2003 - 22:46
#22
takker for point :-)
13. august 2003 - 22:47
#23
er det kun mysql 4 der kan lave subquerys?
13. august 2003 - 22:50
#24
aner intet om mysql - men nej, Oracle, informix og db2 kan også :-)
13. august 2003 - 23:04
#25
Ældre versioner af mysql (<4) kan ikke, hvis det er hvad du vil vide.
Vi tilbyder markedets bedste kurser inden for webudvikling