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:
etCode:
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
- le champs BILLET.tkt_name est une importation de nom de taille 8 caractères maximumCode:
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
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:
J'aurais tous mes champs uniquesCode:
1
2
3
4 SELECT * FROM billet GROUP BY billet.tkt_name HAVING COUNT(*) = 1
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 ?
Je vous remercie par avance de votre aide.Code:
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,'%')