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 :

Problème sur un UPDATE avec jointure


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Problème sur un UPDATE avec jointure
    Bonjour,

    J'ai un problème avec une requête qui n'affiche aucun résultat et je ne comprends pas pourquoi.

    La requête est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Update T1
    Set T1.nom=T2.nom
    From table T1
    Right join table T2 on T1.nom =T2.nom
    Where T2.nom like 'F%'
    Pour info : Le champ T1 est NULL et celui de T2 contient un code commençant par un F.

    Merci de votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 448
    Points
    52 448
    Billets dans le blog
    5
    Par défaut
    Vous dites T1 est NULL mais T1 est une table. D'autre part on parle pas de "champ" dans les SGBDR mais de colonne. Les champs c'est fait pour les paysans ou pour les formulaires de la sécu....

    Enfin, vous ne dites pas avec quel SGBDR vous travaillez;...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Update T1
    Set T1.nom=T2.nom
    From table T1
    Right join table T2 on T1.nom =T2.nom
    Where T2.nom like 'F%'
    Le champ T1 est NULL et celui de T2 contient un code commençant par un F
    J'imagine que vous voulez dire que la colonne T1.nom est (parfois ou toujours ?) à NULL ?

    Dès lors, comment voulez-vous trouver l'égalité on T1.nom =T2.nom ?
    Et, par voie de conséquence, comment savoir quelle valeur de T2.nom attribuer à T1.nom ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je suis perplexe sur
    une requête qui n'affiche aucun résultat et je ne comprends pas pourquoi.
    Or ta requete est un update, et un update n'affiche pas de résultat. A la limite le sgbd indique combien de ligne il a mis à jour.

    Cordialement
    Soazig

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mars 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mars 2016
    Messages : 58
    Points : 105
    Points
    105
    Par défaut
    Bonjour,

    Comme CinePhil le faisait remarquer il y a un pb de logique dans la requete

    Si T2 renvoie une ou plusieurs lignes avec nom commencant par F et si tu n'as aucune ligne T1 avec un nom commencant par F alors il n'y a rien a mettre a jour car tu fais une jointure sur la colonne champ. Il n'y a aucune correspondance ! es tu sur de la jointure que tu as utilise ?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par sqllm Voir le message
    Bonjour,

    Comme CinePhil le faisait remarquer il y a un pb de logique dans la requete

    Si T2 renvoie une ou plusieurs lignes avec nom commencant par F et si tu n'as aucune ligne T1 avec un nom commencant par F alors il n'y a rien a mettre a jour car tu fais une jointure sur la colonne champ. Il n'y a aucune correspondance ! es tu sur de la jointure que tu as utilise ?
    Bonjour,
    Tout d'abord merci de ne pas faire semblant de n'avoir pas compris le message.
    Mon pb est que je ne trouve pas dans les tables d'autres champs qui renvoient la même information pour faire la jointure.

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    Citation Envoyé par FLOMAR91 Voir le message
    Tout d'abord merci de ne pas faire semblant de n'avoir pas compris le message.
    je ne pense qu'il est question de ça, ta question est un peu bancale, et ta requête n'a aucun sens

    normalement au lieu d'improviser un message on explique ce qu'on veut faire, puis ce qu'on a tenté
    là tu n'expliques en rien ce que tu veux faire ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    je ne pense qu'il est question de ça, ta question est un peu bancale, et ta requête n'a aucun sens

    normalement au lieu d'improviser un message on explique ce qu'on veut faire, puis ce qu'on a tenté
    là tu n'expliques en rien ce que tu veux faire ...
    Je veux tout simplement remplacer T1.nom par le contenu de T2.nom c'est aussi simple que ça. Le pb c'est la jointure je trouve pas d'autre lien entre les tables que nom. Voilà

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 084
    Points : 38 381
    Points
    38 381
    Billets dans le blog
    9
    Par défaut
    Communiquez la description des deux tables (ordres CREATE TABLE) et un petit extrait de leur contenu

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par FLOMAR91 Voir le message
    Je veux tout simplement remplacer T1.nom par le contenu de T2.nom c'est aussi simple que ça. Le pb c'est la jointure je trouve pas d'autre lien entre les tables que nom. Voilà
    Vous avez compris l'illogisme de votre requête et même du besoin tel que vous l'exprimez ici ou pas ?

    Alors au lieu de nous prendre de haut, commencez par respecter la charte de ce forum !

    Pour vous aider efficacement, il nous faut :
    - la description des tables utilisées ;
    - quelques exemples de données dans les deux tables ;
    - le résultat attendu ;
    - et, si possible, une expression claire du besoin.

    J'ajoute que, vu que copier un nom d'une table dans une autre constitue une redondance de données, je serais aussi curieux de connaître la raison de ce besoin.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Update avec jointure sur plusieurs tables
    Par jnauche dans le forum SQL
    Réponses: 11
    Dernier message: 27/11/2015, 10h28
  2. Réponses: 4
    Dernier message: 07/07/2011, 09h51
  3. Réponses: 16
    Dernier message: 20/01/2011, 13h45
  4. Problème dans un UPDATE avec jointure
    Par seblem dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/03/2008, 12h26
  5. [UPDATE] avec jointure sur une requete
    Par userB dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/07/2007, 17h18

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