Bonjour à tous

J'ai un peu de mal avec ma logique, si vous pouvez m'aider à me désembrouiller la tête.

J'ai deux tables suivantes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
TABLE PASSAGER
 
id_billet  id_facture   nom_passager    
 
1           20010       DUPONTI/JEAN     
2           20010       DUPONTI/PIERRE   
3           20012       PIERRE/LOUIS    
4           20012       ROGER/CLAIRE
5           20012       ROGER/SYLVIE
6           20014       DUPUIS/ALAIN
7           20017       FRANCOIS/MAXIM
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
TABLE BILLET
 
tkt_number  tkt_name     id_billet
123456      DUPONTI/      NULL
123457      DUPONTI/      NULL
123458      PIERRE/L      NULL
123459      ROGER/CL      NULL
123460      ROGER/SY      NULL
123461      DUPUIS/A       NULL
123462      FRANCOIS      NULL
- le champs BILLET.tkt_name est une importation de nom de taille 8 caractères maximum
donc il m'arrive d'avoir dans la table BILLET deux fois le même nom dans BILLET.tkt_name (ici DUPONTI/)

Pour le moment, je voudrais faire un UPDATE le champ billet.id_billet = passager.id_billet pour tous les champs ou le billet.tkt_name qui sont uniques.

En faisant cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT * 
FROM billet 
GROUP BY billet.tkt_name 
HAVING COUNT(*) = 1
J'aurais tous mes champs uniques

123458      PIERRE/L     NULL
123459      ROGER/CL   NULL
123460      ROGER/SY   NULL
123461      DUPUIS/A    NULL
123462      FRANCOIS   NULL

Donc UPDATE le champ billet.id_billet = passager.id_billet pour tous les champs où le billet.tkt_name est unique

Et c'est là que ma logique se perd ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE BILLET SET BILLET.id_billet = (
  SELECT PASSAGER_id_billet FROM billet GROUP BY billet.tkt_name HAVING COUNT(*) = 1
) WHERE SUBSTR(PASSAGER.nom_passager,1,8) LIKE CONCAT('%',BILLET.tkt_name,'%')
Je vous remercie par avance de votre aide.