Avatar billede bhn.314 Nybegynder
06. oktober 2004 - 12:01 Der er 6 kommentarer og
1 løsning

Check for ens fornavn+efternavn

Jeg har en database med navne på en masse mennesker. Jeg har prøvet at lave en sql der henter folk med ens fornavn+efternavn - for at bruger kan tage stilling til om det er dubletter.

Jeg har prøvet noget a la dette:

SELECT         person_firstname, person_lastname
FROM         tblperson
GROUP BY     person_firstname, person_lastname
HAVING         count(person_firstname, person_lastname)>1

...men det virker ikke !!!!
Avatar billede bhn.314 Nybegynder
06. oktober 2004 - 12:07 #1
...Glemte lige at sige at jeg selvfølgelig vil have alle navnene. Dvs.

person_firstname|person_lastname|person_id

Peter          |Hansen        |120
Peter          |Hansen        |985
Anders          |Klausen        |324
Anders          |Klausen        |521
Anders          |Klausen        |542

Sql'en jeg har prøvet med så sådan ud:

SELECT         person_firstname, person_lastname, person_id
FROM         tblperson
GROUP BY     person_firstname, person_lastname
HAVING         count(*)>1
ORDER BY     person_firstname, person_lastname
Avatar billede arne_v Ekspert
06. oktober 2004 - 18:35 #2
SELECT a.person_firstname, a.person_lastname, a.person_id, b.person_id
FROM tblperson a, tblperson b
WHERE a.person_firstname=b.person_firstname AND a.person_lastname=b.person_lastname AND a.person_id <> b.person_id
Avatar billede arne_v Ekspert
06. oktober 2004 - 18:35 #3
Det hedder en self join
Avatar billede bhn.314 Nybegynder
13. oktober 2004 - 11:21 #4
SELECT     DISTINCT b.*, organisation_name, function_name
FROM     (
    SELECT        person_firstname, person_lastname, person_birth
    FROM         tblperson
    GROUP BY     person_firstname, person_lastname, person_birth
    HAVING     count(*)>1
    ORDER BY     person_firstname, person_lastname, person_birth
    ) a,
    tblperson b,
WHERE         a.person_firstname=b.person_firstname
AND         a.person_lastname=b.person_lastname
ORDER BY     person_firstname, person_lastname, person_middlename, person_birth
Avatar billede bhn.314 Nybegynder
13. oktober 2004 - 11:23 #5
>>arne_v: Nej, den kunne ikke bruges. Jeg fandt dog ud af ovenstående
Avatar billede bhn.314 Nybegynder
13. oktober 2004 - 11:24 #6
Lukker
Avatar billede arne_v Ekspert
24. oktober 2004 - 00:10 #7
????

Hos mig ser den da ud til at virke perfekt !

CREATE TABLE tblperson (
  person_id INTEGER NOT NULL,
  person_firstname VARCHAR(25),
  person_lastname VARCHAR(25),
  PRIMARY KEY (person_id)
);
INSERT INTO tblperson VALUES(1,'Anders','Andersen');
INSERT INTO tblperson VALUES(2,'Børge','Børgesen');
INSERT INTO tblperson VALUES(3,'Christian','Christiansen');
INSERT INTO tblperson VALUES(4,'Anders','And');
INSERT INTO tblperson VALUES(5,'Carl','Christiansen');
INSERT INTO tblperson VALUES(6,'Søren','Sørensen');
INSERT INTO tblperson VALUES(7,'Anders','Andersen');
INSERT INTO tblperson VALUES(8,'Børge','Børgesen');
INSERT INTO tblperson VALUES(9,'Carsten','Christiansen');
INSERT INTO tblperson VALUES(10,'Z','Zzzz');
SELECT a.person_firstname, a.person_lastname, a.person_id, b.person_id
FROM tblperson a, tblperson b
WHERE a.person_firstname=b.person_firstname AND a.person_lastname=b.person_lastname AND a.person_id <> b.person_id;
DROP TABLE tblperson;

Output:

person_firstname        person_lastname person_id      person_id
Anders  Andersen        7      1
Børge  Børgesen        8      2
Anders  Andersen        1      7
Børge  Børgesen        2      8
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