Salut à tous,
Je cherche depuis quelques temps à régler un problème de doublons: j'ai consulté avec interêt le chapitre qui leur sont consacrés mais malgré tout, je ne parvient pas à en venir à bout...
Etant un nouveau membre, je vais faire un effort pour respecter au mieux les règles de présentation afin que ma requète soit la plus claire possible...
Je travaille sur Oracle iSQL*Plus
Voici ma table DDL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE liste_agents ( agent_id NUMBER(4), first_name VARCHAR2(20), last_name VARCHAR2(20), birth_date DATE );
...Et son contenu DDL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 INSERT INTO liste_agents VALUES (1,'Coty','Colt',TO_DATE('26-DEC-1985:13:46:08', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (2,'Diamond','Filmore',TO_DATE('15-JUL-1985:00:40:16', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (3,'Skye','Breck',TO_DATE('12-JUL-1967:09:08:35', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (4,'Hazlett','Molyneux',TO_DATE('23-NOV-1961:15:25:12', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (5,'Ava','Bullions',TO_DATE('26-MAY-1985:01:35:39', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (6,'Grayson','Lightfoot',TO_DATE('04-FEB-1958:03:51:39', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (7,'Holman','Boyd',TO_DATE('05-FEB-1957:18:43:13', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (8,'Fleta','Cheever',TO_DATE('18-JUN-1957:22:30:47', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (9,'Charlton','Carden',TO_DATE('24-JAN-1985:07:44:28', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (10,'Skelton','Marsh',TO_DATE('25-JAN-1934:04:58:02', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (11,'Aswin','Wilbraham',TO_DATE('02-FEB-1957:11:42:57', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (12,'Egbert','Biddulph',TO_DATE('20-MAR-1971:23:52:29', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (13,'Darthmouth','Huband',TO_DATE('25-FEB-1971:02:14:12', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (14,'Madison','Kirkpatrick',TO_DATE('07-MAR-1944:22:58:08', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (15,'Edda','Keith',TO_DATE('30-JUL-1949:02:21:40', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (16,'Landon','Cunningham',TO_DATE('03-APR-1971:12:56:46', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (17,'Radborne','Witherington',TO_DATE('18-MAY-1944:17:04:52', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (18,'Brooke','Kirtland',TO_DATE('26-APR-1985:21:13:10', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (19,'Salton','Vibbard',TO_DATE('17-MAY-1971:10:48:24', 'DD-MON-YYYY:HH24:MI:SS')); INSERT INTO liste_agents VALUES (20,'Rockwell','Cam',TO_DATE('22-JUN-1957:06:53:46', 'DD-MON-YYYY:HH24:MI:SS'));
Ces valeurs ne sont pas exhaustives, mais bon c'est juste pour expliquer le principe...
Mon but est d'identifier tous les couples qui partagent la même année de naisssance:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 SELECT ag1, ag2 FROM ( SELECT a1.first_name||' '||a1.last_name ag1, a2.first_name||' '||a2.last_name ag2 FROM liste_agents a1 INNER JOIN liste_agents a2 ON to_char(a1.birth_date,'YYYY') = to_char(a2.birth_date,'YYYY') WHERE a1.agent_id <> a2.agent_id ) ORDER BY ag1;
Comme vous l'avez peut-être deviné je cherche à éliminer les doublons de couples qui apparaissent inéluctablement (en rouge):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 ag1 ag2 ----------------- ----------------- Aswin Wilbraham Fleta Cheever Aswin Wilbraham Holman Boyd Aswin Wilbraham Rockwell Cam Ava Bullions Charlton Carden Ava Bullions Coty Colt Ava Bullions Brooke Kirtland Ava Bullions Diamond Filmore Brooke Kirtland Diamond Filmore Brooke Kirtland Ava Bullions Brooke Kirtland Charlton Carden Brooke Kirtland Coty Colt Charlton Carden Diamond Filmore Charlton Carden Coty Colt Charlton Carden Ava Bullions Charlton Carden Brooke Kirtland Coty Colt Charlton Carden Coty Colt Diamond Filmore Coty Colt Brooke Kirtland Coty Colt Ava Bullions Darthmouth Huband Salton Vibbard Darthmouth Huband Landon Cunningham Darthmouth Huband Egbert Biddulph Diamond Filmore Ava Bullions Diamond Filmore Coty Colt Etc...
Je crois que tout y est.
Si quelq'un aurait une solution à proposer elle serait la bienvenue...
D'avance merci
a+
Partager