Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 30/11/2006, 17h33   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 10
Points : 2
Points : 2
Par défaut Problème de requête rownum

En fait c'est une requête qui marche avec oracle mais en db2 j'ai le problème listé ci-dessous
Requete:
select Count(*) as total from (select rownum as r, t.* from (select distinct c.* from CUSCARMESSAGE c, EDIPARAM e where (e.Intchnum = c.intchnum) and (e.MessOwner = 'EDIFACT') and ((e.MessType = 'EDIF' and (ENTETE='UNB' or ENTETE = 'UNH')) or (e.MessType = 'TRAD' and (ENTETE = 'BGM' or ENTETE = 'ITB')) or (e.MessType = 'IATA' and (ENTETE = 'FFM' or ENTETE = 'FFB'))) order by c.INTCHNUM desc,c.SEGNUMINT asc) t) ;

Resultat:
SQL0206N "ROWNUM" n'est pas autorisé dans le contexte dans lequel il est
utilisé. SQLSTATE=42703
SQL0206N "ROWNUM " n'est pas autorisé dans le contexte dans lequel il est utilisé.
elsodiop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 11h04   #2
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Citation:
Envoyé par elsodiop
En fait c'est une requête qui marche avec oracle mais en db2 j'ai le problème listé ci-dessous
Requete:
select Count(*) as total from (select rownum as r, t.* from (select distinct c.* from CUSCARMESSAGE c, EDIPARAM e where (e.Intchnum = c.intchnum) and (e.MessOwner = 'EDIFACT') and ((e.MessType = 'EDIF' and (ENTETE='UNB' or ENTETE = 'UNH')) or (e.MessType = 'TRAD' and (ENTETE = 'BGM' or ENTETE = 'ITB')) or (e.MessType = 'IATA' and (ENTETE = 'FFM' or ENTETE = 'FFB'))) order by c.INTCHNUM desc,c.SEGNUMINT asc) t) ;

Resultat:
SQL0206N "ROWNUM" n'est pas autorisé dans le contexte dans lequel il est
utilisé. SQLSTATE=42703
SQL0206N "ROWNUM " n'est pas autorisé dans le contexte dans lequel il est utilisé.
Je soupçonne une incompatibilité avec le distinct qui ne renvoie pas un enregistrement correspondant dans une table, donc on ne peut y associer ton rownum. Je pense que la construction n'est pas logique. Ton distinct te renvoie une seule ligne pour plusieurs lignes présentes dans ta base de données, tu ne peux donc pas obtenir un rownum puisque cela concerne plusieurs enregistrements. Je sais pas si je me fais bien comprendre...
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h55   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 10
Points : 2
Points : 2
Citation:
Envoyé par _Jnie_
Je soupçonne une incompatibilité avec le distinct qui ne renvoie pas un enregistrement correspondant dans une table, donc on ne peut y associer ton rownum. Je pense que la construction n'est pas logique. Ton distinct te renvoie une seule ligne pour plusieurs lignes présentes dans ta base de données, tu ne peux donc pas obtenir un rownum puisque cela concerne plusieurs enregistrements. Je sais pas si je me fais bien comprendre...

Oui t'avais raison et même rownum est remplacé dans db2 V8 par row_number() over ()
et la synthaxe qui marche est:
select distinct c.* from CUSCARMESSAGE c, EDIPARAM e where (e.Intchnum = c.intchnum) and (e.MessOwner = '"+messOwner+"') and ((e.MessType = 'EDIF' and (ENTETE='UNB' or ENTETE = 'UNH')) or (e.MessType = 'TRAD' and (ENTETE = 'BGM' or ENTETE = 'ITB')) or (e.MessType = 'IATA' and (ENTETE = 'FFM' or ENTETE = 'FFB'))) order by c.intchnum desc, c.messnum asc, c.segnumint asc";
Merci pour ton aide
elsodiop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h21   #4
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Citation:
Envoyé par elsodiop
Merci pour ton aide
De rien ,c'était avec plaisir!
_Jnie_ 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 13h37.


 
 
 
 
Partenaires

Hébergement Web