Avatar billede falslev Nybegynder
16. januar 2004 - 09:52 Der er 11 kommentarer og
1 løsning

Hjælp til SQL

Nogen der kan hjælpe med en SQL forspørgsel der kan vise hvor der på samme Topic er 2 eller flere bruger med samme IP


Min tabel ser sådan ud:

TopicID, USerID, IP
Avatar billede arne_v Ekspert
16. januar 2004 - 10:35 #1
SELECT TopicID,IP,COUNT(UserID) AS NoUser
FROM TABEL
GROUP BY TopicID,IP
HAVING NoUser >= 2

måske
Avatar billede falslev Nybegynder
16. januar 2004 - 10:59 #2
Virker ikke
Avatar billede arne_v Ekspert
16. januar 2004 - 11:20 #3
SELECT TopicID,IP,COUNT(UserID) AS NoUser
FROM TABEL
GROUP BY TopicID,IP
HAVING COUNT(UserID) >= 2
Avatar billede arne_v Ekspert
16. januar 2004 - 11:20 #4
Logikke burde være OK - det er bare lige med at ramme den rigtige syntax.
Avatar billede falslev Nybegynder
16. januar 2004 - 16:33 #5
Den viser ikke kun dem hvor der er 2 eller flere bruger med samme IP og samme topicid
Avatar billede arne_v Ekspert
16. januar 2004 - 17:04 #6
Det forstår jeg ikke.

USE Test;

CREATE TABLE Test (
  TopicID INTEGER NOT NULL,
  USerID INTEGER NOT NULL,
  IP VARCHAR(100) NOT NULL,
  PRIMARY KEY(TopicID,UserID,IP)
);

INSERT INTO Test VALUES(1,1,'1.1.1.1');
INSERT INTO Test VALUES(1,2,'2.2.2.2');
INSERT INTO Test VALUES(2,1,'1.1.1.1');
INSERT INTO Test VALUES(2,2,'2.2.2.2');
INSERT INTO Test VALUES(2,3,'2.2.2.2');

SELECT TopicID,IP,COUNT(UserID) AS NoUser
FROM Test
GROUP BY TopicID,IP
HAVING COUNT(UserID) >= 2;

giver korrekt:

TopicID IP      NoUser
2      2.2.2.2 2

hod mig !
Avatar billede falslev Nybegynder
17. januar 2004 - 19:02 #7
Er problemet ikke at hvis nu i din ID 1 bruger 2 laver endnu en besv. kommer han med ud og det skal han ikke.
Avatar billede arne_v Ekspert
17. januar 2004 - 19:12 #8
Ah.

Jo.
Avatar billede arne_v Ekspert
17. januar 2004 - 19:17 #9
Men det er der råd for !

SELECT TopicID,IP,COUNT(DISTINCT UserID) AS NoUser
FROM Test
GROUP BY TopicID,IP
HAVING NoUser >= 2;
Avatar billede falslev Nybegynder
17. januar 2004 - 19:56 #10
Den forsp. giver mig alle linierne.
Avatar billede arne_v Ekspert
17. januar 2004 - 20:00 #11
Mystisk - jeg får:

C:\>type z.sql
USE Test;

CREATE TABLE Test (
  ID INTEGER NOT NULL,
  TopicID INTEGER NOT NULL,
  UserID INTEGER NOT NULL,
  IP VARCHAR(100) NOT NULL,
  PRIMARY KEY(ID)
);

INSERT INTO Test VALUES(1,1,1,'1.1.1.1');
INSERT INTO Test VALUES(2,1,2,'2.2.2.2');
INSERT INTO Test VALUES(3,2,1,'1.1.1.1');
INSERT INTO Test VALUES(4,2,2,'2.2.2.2');
INSERT INTO Test VALUES(5,2,3,'2.2.2.2');
INSERT INTO Test VALUES(6,1,2,'2.2.2.2');

SELECT TopicID,IP,COUNT(DISTINCT UserID) AS NoUser
FROM Test
GROUP BY TopicID,IP
HAVING NoUser >= 2;



C:\>\mysql\bin\mysql < z.sql
TopicID IP      NoUser
2      2.2.2.2 2
Avatar billede falslev Nybegynder
19. januar 2004 - 11:05 #12
Det er bare mig. Det virker HELT perfetk.
Mange tak :)
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