Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2004, 16h44   #1
Invité de passage
 
Inscription : avril 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 8
Points : 2
Points : 2
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 :
1
2
3
MATABLE1 = 
 ID NUMERIC(10)
 MONCHAMP1 VARCHAR(30)
Code :
1
2
3
4
MATABLE2 =
 ID NUMERIC(10)
 MONCHAMP2 NUMERIC(10)
 MONCHAMP3 SMALLINT
Code :
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.
gdido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2004, 17h14   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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 :
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
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2004, 09h57   #3
Invité de passage
 
Inscription : avril 2004
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 8
Points : 2
Points : 2
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
gdido est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h34.


 
 
 
 
Partenaires

Hébergement Web