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

Oracle Discussion :

Petite question sur requête


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Petite question sur requête
    J'ai la requête suivante que je souhaite modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select colonne1, colonne2        
    from Table1     
    WHERE   
        colonne1 = 'A'                                       
    and  colonne2  >  xxxxxx
           colonne2   <   yyyyyy             
    GROUP BY                         
       colonne1, colonne2
    ORDER By 
      colonne1, colonne2
    Je souhaite faire une jointure entre table1 et table2 pour que la condition colonne2 > xxxxx et < yyyyy soit vrai pour la table1 et table2 (sachant que colonne2 est présent dans table1 et table2)
    Est ce que si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select a.colonne1, a.colonne2        
    from Table1 a, table2 b    
    WHERE   
    a.colonne1 = b.colonne1                                
    and  a.colonne2   <   yyyyyy
    and a.colonne2 > xxxxx
    and b.colonne2 > xxxxx
    and b.colonne2 < yyyyy
    GROUP BY                         
       a.colonne1, a.colonne2
    ORDER By 
      a.colonne1, a.colonne2
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Depuis des lustres les jointures s'expriment avec JOIN...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT  a.colonne1
        ,   a.colonne2        
    FROM    table1  a
        INNER JOIN
            table2  b    
            ON  a.colonne1  = b.colonne1
    WHERE   a.colonne2  < yyyyyy
        AND a.colonne2  > xxxxx
        AND b.colonne2  > xxxxx
        AND b.colonne2  < yyyyy
    GROUP BY                         
            a.colonne1
        ,   a.colonne2
    ORDER BY
            a.colonne1
        ,   a.colonne2
    ;
    Comme la table table2 n'entre pas dans les résultats, il faudrait vérifier si l'utilisation de EXISTS n'améliorerait pas les performances...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT  a.colonne1
        ,   a.colonne2        
    FROM    table1  a
    WHERE   a.colonne2  < yyyyyy
        AND a.colonne2  > xxxxx
        AND EXISTS
            (   SELECT  NULL
                FROM    table2  b
                WHERE   b.colonne2  > xxxxx
                    AND b.colonne2  < yyyyy
                    AND a.colonne1  = b.colonne1
            )
    GROUP BY                         
            a.colonne1
        ,   a.colonne2
    ORDER BY
            a.colonne1
        ,   a.colonne2
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 14
    Points
    14
    Par défaut J'ai du mal m'exprimer
    J'ai essayé la requête mais le résultat n'est pas exactement ce que je voulais.
    Voila ce que je veux, exemple
    TableA
    Classe / eleve
    A / 001
    A / 003
    A / 009


    TableB
    Classe / élève
    A / 002
    A / 010

    je veux que ma requête me donne la liste des élèves de la table A et B compris entre 001 et 005 pour la classe A
    donc en résultat
    Je veux avoir
    A / 001
    A / 002
    A / 003

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Citation Envoyé par cmoiquivala Voir le message
    J'ai du mal m'exprimer (...)
    je veux que ma requête me donne la liste des élèves de la table A et B compris entre 001 et 005 pour la classe A
    En effet, la demande est mal exprimée...
    Si je m'en réfère à ton exemple, tu voudrais les élèves de la classe A compris entre 001 et 005 qui sont dans la table A ou la table B.
    Ce n'est pas du tout la même opération !
    Il faut utiliser une UNION.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Bonjour Al1_24.
    C'est parfait. C'est effectivement le union qu'il fallait utiliser. Un grand merci à toi fin connaisseur de sql

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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