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

Développement SQL Server Discussion :

Requête Sql UPDATE avec concaténation de chaines


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 11
    Points
    11
    Par défaut Requête Sql UPDATE avec concaténation de chaines
    Salut à tous.
    Je suis loin d'être doué en sql et j'ai une requête assez complexe (pour moi) pour modifier un champ d'une table.
    En gros il y a 3 tables dans l’histoire, je veux modifier un champ d'une de ces tables en fonction de deux champs issus des deux autres tables...
    J'ai pondu la requête suivante qui ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE `ps_product_download`
    SET `display_filename`=(SELECT ps_product.reference FROM ps_product WHERE AND ps_product.id_product=ps_product_download.id_product)
    +
    (SELECT ps_product_lang.name FROM ps_product_lang WHERE ps_product_lang.id_product=ps_product_download.id_product )
    +
    '.mp3'
    WHERE
    `display_filename`='fichier'
    Je veux que le display_filename soit construit en 3 morceaux.
    Je sais pas si c'est pas clair, mais niveau syntaxe y a un truc qui va pas.
    D'avance merci pour tout tuyau !

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Effectivement, le problème vient de la syntaxe de la requête qui n'est pas bonne. Il est tout à fait possible de faire un UPDATE en récupérant des informations via des jointures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE PD SET display_filename = P.reference + PL.name + '.mp3'
    FROM ps_product_download AS PD
    INNER JOIN ps_product AS P ON P.id_product = PD.id_product
    INNER JOIN ps_product_lang AS PL ON PL.id_product = P.id_product
    WHERE display_filename = 'fichier'
    Exemple écrit sans être testé. Il peut donc subsister des erreurs.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Merci Dorinf pour al réponse.
    Finalement je suis resté sur mon modèle mais avec quelques modifs ça a fini par fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE `ps_product_download`
    SET `display_filename`=(SELECT ps_product.reference FROM ps_product WHERE ps_product.id_product=ps_product_download.id_product)
    +
    (SELECT ps_product_lang.name FROM ps_product_lang WHERE ps_product_lang.id_product=ps_product_download.id_product AND  ps_product_lang.id_lang=2 )
    +
    '.mp3'
    WHERE
    `display_filename`='fichier'

  4. #4
    Invité
    Invité(e)
    Par défaut
    Juste pour préciser que ce code est dégueulasse et non optimal.
    Le cas où tes sous requêtes ramènent plusieurs valeurs va faire planter le update.
    Tu pourrais t'inspirer du code de Dorinf pour progresser.
    Dernière modification par al1_24 ; 16/08/2016 à 16h16. Motif: Citation superflue

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Oui j'avoue que c'est pas joli, mais ça a fonctionné pour les petites modif que je devais faire.
    Mais j'ai bien noté le code de Dorinf !

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

Discussions similaires

  1. [MySQL] Requête SQL UPDATE ne marche pas avec Mozilla
    Par souffirst dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/11/2008, 15h24
  2. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 15h48
  3. problème d'update avec concaténation
    Par Invité dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/11/2005, 16h55
  4. [MySQL] probleme d'une requête SQL crée avec phpmyadmin
    Par ghita269 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/10/2005, 10h15
  5. [PL/SQL] update avec jointure
    Par Fox_magic dans le forum Oracle
    Réponses: 6
    Dernier message: 09/12/2004, 12h19

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