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 :

[firebird] sous select dans un select


Sujet :

SQL Firebird

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut [firebird] sous select dans un select
    bonjour tlm

    voila mon problème, je veux écrire une sous-requête liée à la requête principale, mais firebird a l'air d'avoir du mal à le gérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MATABLE1 = 
     ID NUMERIC(10)
     MONCHAMP1 VARCHAR(30)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MATABLE2 =
     ID NUMERIC(10)
     MONCHAMP2 NUMERIC(10)
     MONCHAMP3 SMALLINT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT
       M1.MONCHAMP1,
       SUM(M2.MONCHAMP2),
       (SELECT SUM(M2.MONCHAMP2) FROM MATABLE2 M2
        WHERE M2.ID = M1.ID
        AND M2.MONCHAMP3 = 2)
    FROM
       MATABLE1 M1, MATABLE2 M2
    WHERE M1.ID = M2.ID
    AND M2.MONCHAMP3 = 1
    GROUP BY 1
    il me renvoie une erreur à l'éxécution de la requête...
    voila j'espère que c'est assez clair et que vous pourrez m'aider
    merci d'avance

    gdido.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Et si vous nous disiez le message d'erreur ??

    Moi j'essayerai Ensuite il est mieux d'adopter la norme SQL et donc d'utiliser les jointures :
    La requete suivante doit être l'équivallent de la votre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
       M1.MONCHAMP1,
       sum(M2.MONCHAMP2),
       sum(M3.monchamp2)
    FROM
       MATABLE1 M1
       inner join MATABLE2 M2 on ( M1.ID = M2.ID AND M2.MONCHAMP3 = 1)
       left join MATABLE2 M3 on (M3.ID = M1.ID AND M3.MONCHAMP3 = 2)
    group by monchamp1

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    merci ca marche avec les join, c'est vrai que j'ai été habitué aux jointures dans le where et non dans le from, mais c'est une habitude à proscrire je pense...

    merci de votre aide

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

Discussions similaires

  1. utiliser deux sous requêtes dans un select
    Par V i n c e n t dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/08/2010, 16h30
  2. [SQL Server] Sous Requete dans le select
    Par Le Singe dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/11/2006, 09h11
  3. Utiliser Resultat D4une Sous Requete Dans Un Select
    Par loiseaud dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/08/2006, 11h42
  4. Sous requêtes dans un SELECT ??
    Par solp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/03/2006, 15h39
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

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