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

MS SQL Server Discussion :

multiple rows in singleton select.


Sujet :

MS SQL Server

  1. #1
    Membre éclairé Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Par défaut multiple rows in singleton select.
    Bonjour je veux remplir le champs lcctcrep1 qui est le code représentant dans ma ligne de commande. en cherchant clctrep1 qui est le code représentant dans mon ma table client.

    j'ai un message d'erreur multiple rows j'ai plusieurs lignes dans ma ligne commande

    une petite idée ?? Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update lcomcli 
    set lcctcrep1 =
    (select clctrep1 from client join lcomcli 
    on lcctcode=clktcode 
    )

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    La requête que vous avez écrite est correcte mais elle comporte une jointure triangulaire.
    Pour l'éviter, vous pouvez remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE dbo.lcomcli
    SET lcctcrep1 = CLI.clctrep1
    FROM dbo.lcomcli AS COM_CLI
    JOIN dbo.client AS CLI
    	ON CLI.lcctcode = COM_CLI.clktcode
    Néanmoins cela ne signifie pas que le résultat de la requête sera correct, car comme vous l'indique SQL Server, dans la table client il existe plusieurs valeurs de clctrep1 pour un même clktcode.
    A vérifier donc

    @++

  3. #3
    Membre éclairé Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Par défaut
    Merci pour ta réponse mais la requête ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL Error:  Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 11 .. Error Code: -104. Invalid token The SQL: UPDATE dbo.lcomcli
    SET lcctcrep1 = CLI.clctrep1
    FROM dbo.lcomcli AS COM_CLI
    JOIN dbo.client AS CLI
    	ON CLI.lcctcode = COM_CLI.clktcode
    ;

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Je ne vois pas où se situe l'erreur ...
    Avez-vous testé cette requête dans SSMS ?
    Le libellé de l'erreur que vous montrez n'est pas un libellé d'erreur de SQL Server ...

    @++

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    "multiple rows in singleton select."
    Traduction :
    de multiples lignes sont ramenées dans une requête qui attend une seule valeur.

    C'est votre sous requête qui est incorrecte. Elle ramène plusieurs lignes alors que vous ne devriez avoir qu'une seule valeur... Une valeur de lcctcrep1 ne peut être égal à plusieurs valeurs... Soit vous transformez la sous requête, soit vous utilisez le IN à la place du =. Dans ce dernier cas, une jointure JOIN / ON sera toujours préférable !

    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/ * * * * *

Discussions similaires

  1. Multiple rows in singleton select
    Par jakouz dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/04/2011, 19h45
  2. erreur multiple rows in singleton select
    Par bassim dans le forum SQL
    Réponses: 5
    Dernier message: 20/12/2006, 16h56
  3. pb : multiple rows in singleton select
    Par sillycoder dans le forum SQL
    Réponses: 6
    Dernier message: 12/06/2005, 16h35
  4. Réponses: 3
    Dernier message: 25/01/2005, 12h31
  5. Mutiple row in singleton select ????? [Important, merci]
    Par SkyDev dans le forum Bases de données
    Réponses: 6
    Dernier message: 20/04/2004, 14h02

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