IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

UPDATE and SELECT


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 13
    Points
    13
    Par défaut UPDATE and SELECT
    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.

  2. #2
    Membre confirmé Avatar de Sebwar
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 172
    Points : 498
    Points
    498
    Par défaut
    Bonjour,

    je crois que la requete que vous cherchez est celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE
    	BILLET a,
    	(SELECT id_billet, SUBSTR(nom_passager,1,8) tkt_name FROM PASSAGER GROUP BY tkt_name HAVING COUNT(*) = 1) b
    SET
    	a.id_billet = b.id_billet
    WHERE
    	b.tkt_name = a.tkt_name

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    C'est bien cela, c'est parfait merci de votre aide

Discussions similaires

  1. [MySQL] update and rand by
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/04/2007, 22h58
  2. msg d'erreur : "Incorrect usage of UPDATE and LIMIT"
    Par ident dans le forum Requêtes
    Réponses: 1
    Dernier message: 29/10/2006, 19h13
  3. Update et select
    Par Arola78 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/09/2006, 14h07
  4. [Debutant] UPDATE et SELECT
    Par zooffy dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/06/2006, 16h19
  5. [Oracle9i/ Pl/Sql] Update et select en même temps
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 7
    Dernier message: 31/05/2005, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo