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

SQL Firebird Discussion :

ERREUR d'UPDATE : Multiple rows in singleton select


Sujet :

SQL Firebird

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Points : 35
    Points
    35
    Par défaut ERREUR d'UPDATE : Multiple rows in singleton select
    Je veux modifier un champ PERIODE ( CHAR(1) ) dans une table RESULTAT à l'aide d'une table BILANS ( une seule colonne de champs DATE unique) pour chaque valeur de date de la premiére ( DATEDEM : Timestamp ) correspondant à une valeur contenue dans la seconde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE "RESULTAT"
    SET "PERIODE" = 'M'
    WHERE "DATEDEM" = (
    SELECT D1.DATEDEM FROM "BILANS" D , "RESULTAT" D1
      WHERE D.DB = CAST(D1.DATEDEM AS DATE)
    )
    et j'obtiens... l'erreur SQL :
    Multiple rows in singleton select
    même erreur si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE "RESULTAT"
    SET "PERIODE" = 'M'
    WHERE CAST(DATEDEM AS DATE) = (
    SELECT D.DB FROM "BILANS" D , "RESULTAT" D1
      WHERE D.DB = CAST(D1.DATEDEM AS DATE)
    )
    Merci de votre aide !

    :

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Le message veux dire que votre sous select renvoit plusieurs valeurs.
    Essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT D.DB FROM "BILANS" D , "RESULTAT" D1 
      WHERE D.DB = CAST(D1.DATEDEM AS DATE
    Vous verrez qu'il y a bien une liste de valeur !

    Or le = n'accepte qu'une seule valeur de chaque coté pour tester l'égalitée.

    Et donc un XXXX = (select...) va bien fonctionner uniquement si le select ... renvoie qu'une seule valeur.

    Si vous voulez mettre à jours tous vos enregistrements dont la DATEDEM se trouve dans la liste fournie par un select il ne faut pas utiliser le = mais le prédicat IN.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE "RESULTAT" 
    SET "PERIODE" = 'M' 
    WHERE "DATEDEM" IN ( 
    SELECT D1.DATEDEM FROM "BILANS" D , "RESULTAT" D1 
      WHERE D.DB = CAST(D1.DATEDEM AS DATE) 
    )
    Mais je ne sais pas si c'est bien ça que vous souhaitez.

  3. #3
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 913
    Points : 6 032
    Points
    6 032
    Par défaut
    A bien lire l'erreur, je pense que ton SELECT renvoie plusieurs valeurs...

    Si tu veux effectivement mettre à jour toutes les occurrences de RESULTAT correspondant au critère, il faut coder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE "RESULTAT" 
    SET "PERIODE" = 'M' 
    WHERE "DATEDEM"
     IN
     ( 
    SELECT D1.DATEDEM FROM "BILANS" D , "RESULTAT" D1 
      WHERE D.DB = CAST(D1.DATEDEM AS DATE) 
    )

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Merci de vos réponses
    ... et de votre parfaite pédagogie !

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

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. multiple rows in singleton select.
    Par le_dilem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2009, 14h02
  3. erreur multiple rows in singleton select
    Par bassim dans le forum SQL
    Réponses: 5
    Dernier message: 20/12/2006, 16h56
  4. pb : multiple rows in singleton select
    Par sillycoder dans le forum SQL
    Réponses: 6
    Dernier message: 12/06/2005, 16h35
  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