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

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