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 Oracle Discussion :

Problème avec requête SQL sous Oracle8I


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut Problème avec requête SQL sous Oracle8I
    Bonjour,
    j'ai créer une requête sous pl/sql avec oracle XE 10, cette dernière marche très bien mais lorsque je la lance sous pl/sql avec oracle 8i au travail, la requête s’exécute sans résultat avec les sablier qui tourne sans arrêt.
    voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select T.Ident, SUM(t.debit), SUM(t.credit)
     from ecr T
    WHERE EXISTS (SELECT * FROM ECR B
                         where T.Ident=B.Ident
                         AND   T.Per=B.Per
                         --AND B.journee='20160128' AND B.can='12'
                         )
    GROUP BY T.Ident, t.debit, t.credit, T.CAN, T.JOURNEE         
    HAVING (((T.JOURNEE)='20160128') AND ((T.CAN)='12'))
    ORDER BY T.Ident

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Vous dites que votre requête fonctionne très bien, or les colonnes du group by ne correspondent pas à celles du select et les colonnes du having ne correspondent pas non plus au group by

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    Salut,
    La requête marche bien sur ma base oracle xe 10 que j'ai installé chez moi mais elle ne marche pas sur la base oracle 8i au travail.

    es possible de l'optimisé merci.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Comme indiqué dans ma 1ere réponse, mettez en conformité select, group by et having, comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Select T.Ident, 
           SUM(t.debit), 
           SUM(t.credit)
    from ecr T
    WHERE EXISTS 
         (SELECT 1 FROM ECR as B
          where T.Ident=B.Ident
            AND T.Per  =B.Per)
      AND T.JOURNEE='20160128' 
      AND T.CAN='12'
    GROUP BY T.Ident, 
    ORDER BY T.Ident
    Les éléments du having ne correspondaient à aucun critère de groupage, je les ai donc mis dans le where
    Je doute qu'aucune version Oracle n'accepte un SQL aussi approximatif

    Ca ne change aucunement le résultat, mais je préfèrè mettre "select 1" ou "select null" plutot que "select *" dans un test d'existence,
    je trouve que ça met mieux en évidence le fait qu'on ne s’intéresse pas au contenu, qui de toutes façon n'est pas transporté avec exists

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    Salut, est merci pour la réponse, mais malheureusement elle ne marche toujours pas sur oracle 8i avec pl/sql. es possible de la faire d'une autre manière.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Elle ne marche pas, c'est à dire ?
    quel est votre résultat obtenu ?
    quel est le message d'erreur si erreur il y a ?

    Je vois que j'avais laissé une virgule par erreur après le group by, peut etre n'est-ce que ça

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    Salut, je n'es aucun résultat juste le sablier qui tourne sans arrêt.
    SGBD utiliser ORACLE 8i et pl/sql.
    il faut utiliser (+) pour la jointure mais je n'arrive pas.

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Points : 71
    Points
    71
    Par défaut
    Voici une Requête que j'ai réalisé est qui marche bien avec le résultat souhaité, est je voudrais l'exécuté sous oracle 8i, LEFT JOIN ne marche pas sous oracle 8i alors comment faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T.Ident, Sum(B.DEBIT), Sum(B.CREDIT)
    FROM Ecriture_Comp T LEFT JOIN Ecriture_Comp B  ON (T.PER = B.PER) 
    AND (T.Ident = B.Ident)
    GROUP BY t.Ident, T.Per, T.Journee, T.CAN
    HAVING (((T.JOURNEE)='20160128') AND ((T.CAN)='12'))
    ORDER BY T.Ident
    Sous la même Table.

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Vous devez utiliser l'ancienne syntaxe :
    Table1 right outer join table2 : where table1.col1 = table2.col2(+)
    Table1 left outer join table2 : where table1.col1(+) = table2.col2

    cf. http://docs.oracle.com/cd/B28359_01/...queries006.htm

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    •To write a query that performs an outer join of tables A and B and returns all rows from A (a left outer join), use the LEFT [OUTER] JOIN syntax in the FROM clause, or apply the outer join operator (+) to all columns of B in the join condition in the WHERE clause. For all rows in A that have no matching rows in B, Oracle Database returns null for any select list expressions containing columns of B

  11. #11
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 108
    Points : 28 420
    Points
    28 420
    Par défaut
    Personne ne t'a déjà montré la différence de notation ?

Discussions similaires

  1. [SQL] Problème avec requête SQL
    Par Kenya dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/01/2008, 22h13
  2. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  3. [SQL] problème avec requête sql
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2007, 11h58
  4. probléme avec requête SQL
    Par richard60 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/03/2007, 18h18
  5. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41

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