PB SQL ou INTERBASE

Résolu
ch0upette Messages postés 25 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 février 2008 - 2 nov. 2006 à 16:44
ch0upette Messages postés 25 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 février 2008 - 2 nov. 2006 à 18:25
Bonsoir,
Voilà : mon programme java me permet de me connecter à une interbase.
Les requêtes simples s'effectuent sans soucis.
Mais lorsque j'effectue une sous requête :

SELECT Sum(CA), Sum(POIDS), Sum(MARGE), Count(DISTINCT CMDE)
FROM
(SELECT PDSQTELIV*LICOM.PXNET AS CA, PDSQTELIV*(LICOM.PXNET-PXRVT) AS MARGE, PDSQTELIV AS POIDS, LICOM.NOCDE AS CMDE
FROM LICOM,COMMANDE
WHERE LICOM.NOCDE = COMMANDE.NOCDE
AND DATECDE>'2006-01-01'
AND DATECDE<'2006-10-01');

j'obtiens (non pas à la compilation mais lors de l'exécution) :
java.sql.SqlException:[EasySoft][Interbase]Dynamic SQL Error, SQL Error code =
-104, Token unknown - line 1, char 66, SELECT



 Si quelqu'un a une idée ....

Céline

4 réponses

ch0upette Messages postés 25 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 février 2008
2 nov. 2006 à 18:25
J'ai vu en répondant et l'ai testé avant de partir du boulot. Malheureusement, interbase ne veut toujours pas accepter. Pas grave, 2nde parade, créer des vues pour stocker les sous requêtes et les supprimer une fois les données traitées.
Merci du coup de main.
A++ 
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
2 nov. 2006 à 17:11
C'est ta requete qui est completement fausse.
On peut pas faire un from (sous requete).
moi j'esseyerais
SELECT Sum(PDSQTELIV*LICOM.PXNET) as CA Sum(PDSQTELIV*(LICOM.PXNET-PXRVT)) AS MARGE, Count(PDSQTELIV AS POIDS, LICOM.NOCDE) AS CMDE
FROM LICOM,COMMANDE
WHERE LICOM.NOCDE = COMMANDE.NOCDE
AND DATECDE>'2006-01-01'
AND DATECDE<'2006-10-01';
++
0
ch0upette Messages postés 25 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 février 2008
2 nov. 2006 à 17:20
Merci, effectivement ça fonctionne; mais la sous requête dans le from devrait exister.
http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/#L1.1.1
c'est le lien où j'ai trouvé le conseil (premier exemple à droite de la page);
Bonne soirée
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
2 nov. 2006 à 17:35
Dsl je connaissait pas cette ecriture.
Par contre dans l'exemple il y a TableReponse, que toi tu avais pas mis dans la premiere requete.
SELECT *
FROM
(
SELECT TIT_CODE, CLI_NOM, CLI_PRENOM
FROM MaTable
) TableReponse
Il faudrait donc que tu esssayes
SELECT Sum(CA), Sum(POIDS), Sum(MARGE), Count(DISTINCT CMDE)
FROM
(SELECT PDSQTELIV*LICOM.PXNET AS CA, PDSQTELIV*(LICOM.PXNET-PXRVT) AS MARGE, PDSQTELIV AS POIDS, LICOM.NOCDE AS CMDE
FROM LICOM,COMMANDE
WHERE LICOM.NOCDE = COMMANDE.NOCDE
AND DATECDE>'2006-01-01'
AND DATECDE<'2006-10-01') TableReponse; pour voir si interbase reconnait cette syntaxe
++
0
Rejoignez-nous