Avatar billede c_k Nybegynder
03. september 2005 - 01:08 Der er 12 kommentarer og
1 løsning

Vælg rækker, hvordan

hvordan skrives den sql ?

min tabel

id  | sessionid
--------------
1    11
2    11
3    11
4    22
5    22
7    22
8    22
9    33
10  33
11  33
...
1012 99
1012 99
1012 99
--------------

jeg skal bruge følgende udtræk.

id  | sessionid
--------------
1    11
8    22
11  33
...
1012 99
--------------

sessionid må kun forekomme en gang selvom der er x antal

?
Avatar billede jaw Nybegynder
03. september 2005 - 01:11 #1
Måske:
SELECT * FROM tabel ORDER BY id ASC GROUP BY sessionid
Avatar billede a1a1 Novice
03. september 2005 - 01:17 #2
select id, sessioni, count(sessionid) from table group by id, sessionid order by count(sessionid) desc

;o)?
Avatar billede a1a1 Novice
03. september 2005 - 01:18 #3
select id, sessionid, count(sessionid) from table group by id, sessionid order by count(sessionid) desc
Avatar billede a1a1 Novice
03. september 2005 - 01:21 #4
select distinct id, sessionid, count(sessionid) from table group by id, sessionid order by count(sessionid) desc

?
Avatar billede a1a1 Novice
03. september 2005 - 01:27 #5
select id, (select count(sessionid) from table ) as number
from table
Avatar billede c_k Nybegynder
03. september 2005 - 01:30 #6
Jeg får denne error:

Invalid use of group function :(
Avatar billede kjulius Novice
03. september 2005 - 01:51 #7
Hvis du ikke har brug for id, så kan du bare skrive:

SELECT DISTINCT sessionid FROM dintabel ORDER BY sessionid

Hvis du insisterer på at have en Id med er du nødt til at afgøre med dig selv, om du er interesseret i den højeste eller den laveste Id for hver sessionId (du er lidt tvetydig i dit eksempel).
Du kan enten bruge MAX eller MIN funktionen:

SELECT MAX(id), sessionid FROM dintabel GROUP BY sessionid ORDER BY sessionid
Avatar billede a1a1 Novice
03. september 2005 - 01:54 #8
select distinct ID, count(sessionid) from <table> group by ID

virker det?
Avatar billede a1a1 Novice
03. september 2005 - 01:55 #9
hvis ja
select distinct ID, count(sessionid) from <table> group by ID ORDER BY count(sessionid) desc

;o)
Avatar billede kjulius Novice
03. september 2005 - 01:59 #10
---> a1: Hvordan er COUNT funktionen kommet ind i dit svar? Det kan jeg ikke se der er blevet spurgt om. Eller er det mig der helt har misforstået spørgsmålet?
Avatar billede c_k Nybegynder
03. september 2005 - 02:05 #11
fik denne her til at virke:

SELECT *, COUNT(upload_id) FROM images GROUP BY upload_id HAVING COUNT(upload_id) >= 1 ORDER BY upload_id
Avatar billede kjulius Novice
03. september 2005 - 02:16 #12
---> c_k: Undskyld, men nu er jeg lidt forvirret. I dit spørgsmål har du ingen felter ved navn upload_id. Svarer det til sessionid i dit spørgsmål? Har tabellen stadig både id, og (nu) upload_id?

For så kan jeg ikke se, at din sql kan virke. * medtager jo alle felter i tabellen, altså også id, men du laver kun en group by på feltet upload_id (sessionid i dit spørgsmål?).

Et eller andet må du have lavet om siden du stillede spørgsmålet. Det er jo ikke nemt at arbejde med, hvis du ændrer i forudsætningerne.

Undskyld hvis jeg lyder lidt frustreret, men det er jeg altså, må jeg indrømme.
Avatar billede nielle Nybegynder
03. september 2005 - 09:04 #13
Som kjulius allerede har været inde på så må dette være løsningen på dit oprindelige spørgsmål:

SELECT sessionid, Max(id) FROM dinTabel GROUP BY sessionid
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester