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:
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
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:
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 ?
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.
Partager