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

Langage SQL Discussion :

Transformer insert into en update


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Transformer insert into en update
    Bonjour à tous,

    J'aimerai faire un update de certains produit de ma table produit, seulement la seule chose que j'ai c'est un script INSERT INTO (exemple)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `products` (`products_id`,`products_quantity`,`products_on_order`,`products_model`,`products_image`,`products_subimage1`,`products_subimage2`,`products_subimage3`,`products_subimage4`,`products_subimage5`,`products_subimage6`,`products_price`,`products_cost`,`products_date_added`,`products_last_modified`,`products_date_available`,`products_weight`,`products_status`,`products_invisible`,`products_tax_class_id`,`manufacturers_id`,`products_ordered`,`products_compare_status`,`products_compare_expedition`,`products_price1`,`products_price2`,`products_price3`,`products_price4`,`products_price5`,`products_price6`,`products_price7`,`products_price8`,`products_price1_qty`,`products_price2_qty`,`products_price3_qty`,`products_price4_qty`,`products_price5_qty`,`products_price6_qty`,`products_price7_qty`,`products_price8_qty`,`products_qty_blocks`,`subscription_periodicity`) VALUES ('6192','-8','0','B3500','Image/access/scandinave/3500.jpg','','','','','','','3.3445','0.0000','0000-00-00 00:00:00','2007-10-29 08:18:00','','0.000','1','0','2','','9','1','','2.5084','2.5084','0.0000','0.0000','0.0000','0.0000','0.0000','0.0000','5','10','0','0','0','0','0','0','1','');
    J'ai essayer de remplacer INSERT INTO par REPLACE INTO et je me retrouve avec des champs null pour les champs qui ne sont pas concerné par la requete

    J'aimerais donc pouvoir faire un update à partir de mon requete.sql composé de INSERT INTO.

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    un UPDATE n'a pas du tout la même syntaxe qu'un INSERT, je t'invite à relire ton cours SQL

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Mathusalem Voir le message
    un UPDATE n'a pas du tout la même syntaxe qu'un INSERT, je t'invite à relire ton cours SQL
    Oui j'ai du mal m'exprimer, pas facile d'expliquer mon problème.

    Je recommence :

    Je me retrouve avec un gros fichier .sql avec pour contenu 500 ligne du genre avec un id unique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `products` (`products_id`,`products_quantity`,`products_on_order`,`products_model`,`products_image`,`products_subimage1`,`products_subimage2`,`products_subimage3`,`products_subimage4`,`products_subimage5`,`products_subimage6`,`products_price`,`products_cost`,`products_date_added`,`products_last_modified`,`products_date_available`,`products_weight`,`products_status`,`products_invisible`,`products_tax_class_id`,`manufacturers_id`,`products_ordered`,`products_compare_status`,`products_compare_expedition`,`products_price1`,`products_price2`,`products_price3`,`products_price4`,`products_price5`,`products_price6`,`products_price7`,`products_price8`,`products_price1_qty`,`products_price2_qty`,`products_price3_qty`,`products_price4_qty`,`products_price5_qty`,`products_price6_qty`,`products_price7_qty`,`products_price8_qty`,`products_qty_blocks`,`subscription_periodicity`) VALUES ('6192','-8','0','B3500','Image/access/scandinave/3500.jpg','','','','','','','3.3445','0.0000','0000-00-00 00:00:00','2007-10-29 08:18:00','','0.000','1','0','2','','9','1','','2.5084','2.5084','0.0000','0.0000','0.0000','0.0000','0.0000','0.0000','5','10','0','0','0','0','0','0','1','');

    Lors de l'export des données nous étions sur une vielle version de Mysql de ce fait nous n'avions qu'un seul choix: exporter en mode INSERT et non pas UPDATE.

    Aujourdhui il est question de mettre à jours certain champs de la table products à partir du fichier SQL ci dessus.

    Nous ne souhaitons donc pas faire d'insert mais un update car les produits existe déjà.

    J'ai testé Replace into qui ne fonctionne pas vriament comme attendu: les champs qui doivent être changés le sont , les autres se changent en NULL.

    Comment pouvons nous procéder pour mettre à jours notre table de produits.?

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 55
    Points
    55
    Par défaut
    bonjour,

    tu as la fonction REPLACE INTO

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = "REPLACE INTO `clients` ( `id_client`  , `nom_client` , `password_client` , `texte`) " .
    "VALUES  ( '$id_client','$nom_client','$password_client','$texte');";
    Cette fonction permet de créer un nouvel enregistrement si l'identifiant de la clé primaire n'existe pas, par contre si l'identifiant existe, la fonction permet de mettre à jour les données.

    Pour éviter d'avoir les champs null, tu dois resaisir toutes les informations à chaque fois ( d'ou l'utilité de la prog objet ici .. ) ou sinon une autre solution.

    Tu fais un select de verif sur un produit que tu es en train de manipuler...

    et en fonction de la valeur qu'il return ( TRUE or FALSE ) tu fais une condition if contenant la requete insert ( si return = false )
    et la sous condition else if pour executer un update ( si return = true )

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Salut Dam1en et merci pour ta reponse, mais comme j'ai pu énnoncé plus haut j'ai déjà essayé REPLACE INTO

    J'ai testé Replace into qui ne fonctionne pas vriament comme attendu: les champs qui doivent être changés le sont , les autres se changent en NULL.
    Exemple je souhaite changer uniquement l'age de 5 clients, avec mon replace into l'age va bien se changer pour les 5 bon clients mais par leur nom mot de passe etc vont passer en NULL ou vide

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par DeZanGe Voir le message
    Salut Dam1en et merci pour ta reponse, mais comme j'ai pu énnoncé plus haut j'ai déjà essayé REPLACE INTO
    j'ai réediter mon message pendant que tu me répondais .. j'avais pas tout lu effectivement :p

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 096
    Points : 28 394
    Points
    28 394
    Par défaut
    Citation Envoyé par DeZanGe Voir le message
    J'ai testé Replace into qui ne fonctionne pas vriament comme attendu: les champs qui doivent être changés le sont , les autres se changent en NULL.
    Les autres ? Les colonnes qui ne sont pas mentionnées dans la requête ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je vais essayer en :

    - créant une nouvelle table (produits2)
    - executant mon .SQL sur cette nouvelle table (produits2)
    - exportant mes donnée en nouvelle version mysql (mode UPDATE) (produits2)
    - executant mon nouveau .SQL sur mon ancienne table en prennant soin de changer le nom de table produits2 en produits

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 55
    Points
    55
    Par défaut
    tu te complique bien la vie, tu développe avec php ?

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    oui jsuis webmaster

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Les autres ? Les colonnes qui ne sont pas mentionnées dans la requête ?
    Exactement

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    C'est résolu en faisant par cette dernière;

    Merci pour votre aide

  13. #13
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 096
    Points : 28 394
    Points
    28 394
    Par défaut
    Je connais mal MySQL ; est-ce que cette syntaxe est reconnue ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE matable 
    SET (listecolonne) = (liste valeurs)
    WHERE colonne_id = valeur_id
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Je connais mal MySQL ; est-ce que cette syntaxe est reconnue ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE matable 
    SET (listecolonne) = (liste valeurs)
    WHERE colonne_id = valeur_id
    Oui je crois même qu'il prend un update matable set (listecolonne) = (select from....)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 31
    Dernier message: 29/04/2014, 09h40
  2. [AC-2010] Passer de INSERT/INTO a UPDATE
    Par Timil dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/05/2011, 18h36
  3. [AC-2007] Message pour les INSERT INTO ET UPDATE
    Par Tristan33000 dans le forum IHM
    Réponses: 2
    Dernier message: 15/06/2009, 11h48
  4. Réponses: 1
    Dernier message: 09/10/2008, 11h58
  5. Probleme avec UPDATE et INSERT INTO
    Par cmoimeme dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/05/2006, 22h12

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