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 :

erreur sur une sous requête


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 34
    Points
    34
    Par défaut erreur sur une sous requête
    bonjour;
    je veux insérer des lignes a partir des lignes déjà existante dans la même table mais j'ai l'erreur suivante:

    Msg 512, Level 16, State 1, Line 3
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    The statement has been terminated.


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    INSERT INTO [REP-DW].[dbo].[MaTable]
               ([Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               ,[Valeur]
               ,[date])
     
    SELECT 
              [Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               , (select Valeur from Matable where MoisId = 11 + select Valeur from Matable where MoisId = 12)as Valeur
               ,getdate ()
      FROM   Matable

    merci d'avance

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    La requete imbriquée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT Valeur FROM Matable WHERE MoisId = 11 + SELECT Valeur FROM Matable WHERE MoisId = 12)As valeur
    Retourne plus d'un résultat... c'est interdit...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Testez ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    INSERT INTO [REP-DW].[dbo].[MaTable]
               ([Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               ,[Valeur]
               ,[date])
     
    SELECT 
              [Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               , ISNULL((SELECT SUM(Valeur) as Valeur FROM Matable WHERE MoisId BETWEEN 11 AND 12),0) AS Valeur
               ,getdate ()
      FROM   Matable
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    NB: je suis parti du principe que "valeur" était compatible avec le SUM...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    votre proposition ça marche nickel.
    toutefois quand je veux faire une division ou une soustraction de valeur, comment dois je faire.

    par exemple:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    INSERT INTO [REP-DW].[dbo].[MaTable]
               ([Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               ,[Valeur
               ,[date])
     
    SELECT 
              [Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               , (select Valeur from Matable where MoisId = 11 - select Valeur from Matable where MoisId = 12)as Valeur
               ,getdate ()
      FROM   Matable

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Quel est le but de cet insertion? à quoi vous sert la table ainsi alimentée? vous inserez un résultat constant (difference ou somme en novembre et janvier) dans toutes les lignes de la table...


    Je suppute une modélisation pas tout à fait optimale (certains utiliserons d'autres termes...)

    Dites nous en plus
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    la table cible contient des indicateurs qui sont calculé a base d'indicateurs de chaque mois. et qui sont égaux soit à la somme, différence ou division d'autres indicateurs

  8. #8
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    la table cible contient des indicateurs qui sont calculé a base d'indicateurs de chaque mois. et qui sont égaux soit à la somme, différence ou division d'autres indicateurs
    HUm... Passons...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    INSERT INTO [REP-DW].[dbo].[MaTable]
               ([Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               ,[Valeur
               ,[date])
     
    SELECT 
              [Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               , (SELECT Valeur FROM Matable WHERE MoisId = 11) - (SELECT Valeur FROM Matable WHERE MoisId = 12)AS Valeur
               ,getdate ()
      FROM   Matable
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    ben vous venez de me corriger en haut dans le cas d'une somme donc ça ne peut pas marcher en cas de soustraction ni de division, Vu que la sous requête renvoie plusieurs valeurs.

    j'ai la même erreur :

    Msg 512, Level 16, State 1, Line 3
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    The statement has been terminated.

  10. #10
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    oups
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  11. #11
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Dans votre table vous avez plusieurs lignes pour le mois de novembre et plusieurs pour le mois de decembre? que voulez vous faire ?
    La soustraction de la somme des valeurs de novembre avec la somme de celles de decembre?


    Celà?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    INSERT INTO [REP-DW].[dbo].[MaTable]
               ([Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               ,[Valeur]
               ,[date])
     
    SELECT 
              [Moisid]
               ,[ProdId]
               ,[InsId]
               ,[IndicId]
               ,[CoId]
               ,ISNULL( (SELECT SUM(Valeur) AS Valeur FROM Matable WHERE MoisId=11)-(SELECT SUM(VALEUR) FROM Matable WHERE MoisId=12)),0) AS Valeur
               ,getdate ()
      FROM   Matable
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. Erreur sur une sous requête
    Par Nikimizi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2013, 11h58
  2. Problème sur une sous-requête
    Par benoiteuskadi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/02/2013, 15h45
  3. Jointure externe sur une sous-requête
    Par pgentils dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2008, 09h34
  4. REGEXP sur une sous requête :s
    Par GrimR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/08/2006, 20h22
  5. Réponses: 8
    Dernier message: 01/03/2005, 16h01

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