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

PHP & Base de données Discussion :

Erreur: Plusieurs valeurs [Oracle]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Par défaut Erreur: Plusieurs valeurs
    Bonjour,

    En souhaitant utilisée la requette suivante qui permet d'aller chercher le nom des auteurs qui ont un revenu total de plus de 2000 $ et qui travaillent à partir de 15 h 00.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  nom 
    FROM Author
    Where idAuthor  IN (SELECT  idAuthor, SUM(REVENU) AS RevenuTotal
    FROM Contrat  Where  Contrat.heure>=15
    GROUP BY Contrat.idAuthor
    HAVING SUM(REVENU) < 2000
    ) ;
    J'obtiens l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00913: too many values
    J'ai essayé avec des INNER JOIN, des JOIN, mais j'obtiens toujours le même problème.

    Comment remédier à ce problème ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 138
    Par défaut
    As tu essayé DISTINCT ?

    Cordialement,

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Dans ta sous-requête, il ne faut pas que tu aies deux valeur de retournées (idAuthor, SUM(REVENU)) pour l'utiliser avec IN (Where idAuthor IN).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Par défaut
    Citation Envoyé par Evilam Voir le message
    As tu essayé DISTINCT ?

    Cordialement,
    Oui, mais ca ne change rien.

    Citation Envoyé par Eusebe Voir le message
    Bonjour,

    Dans ta sous-requête, il ne faut pas que tu aies deux valeur de retournées (idAuthor, SUM(REVENU)) pour l'utiliser avec IN (Where idAuthor IN).
    OK, mais je n'ai pas le choix.

    Donc, selon toi c'est quoi la meilleure solution ?

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Pourquoi n'as tu pas le choix ?

    As-tu essayé la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nom 
    FROM Author
    WHERE idAuthor IN (SELECT  idAuthor
        FROM Contrat
        WHERE Contrat.heure>=15
        GROUP BY Contrat.idAuthor
        HAVING SUM(REVENU) < 2000
        ) ;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    As-tu essayé la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nom 
    FROM Author
    WHERE idAuthor IN (SELECT  idAuthor
        FROM Contrat
        WHERE Contrat.heure>=15
        GROUP BY Contrat.idAuthor
        HAVING SUM(REVENU) < 2000
        ) ;
    Oui j'ai essayé. Mais il faut que j'ajoute une autre colonne RevenuTotal qui contiendra le revenutotal de chaque author.

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  idAuthor, SUM(REVENU) AS RevenuTotal
     
        FROM Contrat
        WHERE Contrat.heure>=15
        GROUP BY Contrat.idAuthor
        HAVING SUM(REVENU) < 2000
    Ce code fonctionne bien,mais ce select doit être imbriqué dans un autre select. Comme mentionné dans mon premier exemple

  7. #7
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Dans ton premier exemple, le revenu total n'est pas renvoyé par la requête principale

    Une autre solution à tester, pour répondre à ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Author.nom, SUM(Contrat.REVENU)
    FROM Author
        JOIN Contrat on Author.idAuthor = Contrat.idAuthor
    Where Contrat.heure>=15
    GROUP BY Author.nom
    HAVING SUM(Contrat.REVENU) < 2000;

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

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. Réponses: 7
    Dernier message: 15/02/2005, 13h55
  3. [PL/SQL] Fonction qui retourne plusieurs valeurs
    Par Loko dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2004, 09h43
  4. Plusieurs valeurs dans un value
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2004, 10h58
  5. [Composant] Drag & Drop de plusieurs valeurs à la fois
    Par slowpoke dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/12/2003, 10h26

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