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

Langage SQL Discussion :

Requete SQL > condition BO


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Julien59
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 142
    Par défaut Requete SQL > condition BO
    Bonjour à tous, j'ai un problème sous BO avec ce code, (c'est la borne inf ou sup pour une tranche de dates) j'ai regardé un peu avec Bruno2r et nous avons convenu de vous soumettre le code SQL pour que vous puissiez y jeter un coup d'oeil, car à nos yeux, redondance redondance... Par avance, merci.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    CGL_INTERCO_DIV.PERIOD_NAME IN (SELECT GL_PERIODS.PERIOD_NAME
                                             FROM GL_PERIODS
                                            WHERE (GL_PERIODS.period_year >
                                                  (SELECT P1.period_year
                                                      FROM gl_periods P1
                                                     WHERE gl_periods.period_type =
                                                           P1.period_type
                                                       AND gl_periods.period_set_name =
                                                           P1.PERIOD_SET_NAME
                                                       AND P1.period_name =
                                                           UPPER(@variable('1 - Periode debut / Start Period (MMM-YY)'))))
                                               OR (GL_PERIODS.period_year =
                                                  (SELECT P2.period_year
                                                      FROM gl_periods P2
                                                     WHERE gl_periods.period_type =
                                                           P2.period_type
                                                       AND gl_periods.period_set_name =
                                                           P2.PERIOD_SET_NAME
                                                       AND P2.period_name =
                                                           UPPER(@variable('1 - Periode debut / Start Period (MMM-YY)'))) AND
                                                  GL_PERIODS.period_num >=
                                                  (SELECT P3.period_num
                                                      FROM gl_periods P3
                                                     WHERE gl_periods.period_type =
                                                           P3.period_type
                                                       AND gl_periods.period_set_name =
                                                           P3.PERIOD_SET_NAME
                                                       AND P3.period_name =
                                                           UPPER(@variable('1 - Periode debut / Start Period (MMM-YY)')))))

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    C'est un peu barbare à déchifrer tout ça, non ?

    Je suis peut être un peu difficile, mais il y aurait moyen que tu nous donne la description de ta table (genre à quoi correspondent en gros tes champs) + description précise de ce que tu cherches ?
    (surtout qu'il n'y a qu'une seule table...)

    Mais d'ores et déjà, je ne pense pas qu'on ait besion d'emmêler les sous requêtes pour trouver une borne sup...

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    La variable @variable('1 - Periode debut / Start Period (MMM-YY)')) fait-elle référence à une seule valeur pour ses trois appels ou trois valeurs différentes ?
    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.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Ta condition peut déjà être réécrite ainsi :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
        EXISTS 
        (   SELECT  1
            FROM    gl_periods  p0
                INNER JOIN
                    gl_periods  p1
                    ON  p0.period_type = p1.period_type
                    AND p0.period_set_name = p1.period_set_name
                    AND p0.period_year > p1.period_year
            WHERE   p1.period_name = UPPER(@variable('1 - Periode debut / Start Period (MMM-YY)'))
                AND cgl_interco_div.period_name = p0.period_name
        )
    OR  EXISTS  
        (   SELECT  1
            FROM    gl_periods  p2
                INNER JOIN
                    gl_periods  p3
                    ON  p2.period_type = p3.period_type
                    AND p2.period_set_name = p3.period_set_name
                    AND p2.period_year = p3.period_year
                INNER JOIN
                    gl_periods  p4
                    ON  p2.period_type = p4.period_type
                    AND p2.period_set_name = p4.period_set_name
                    AND p2.period_num >= p4.period_num
            WHERE   p3.period_name = UPPER(@variable('1 - Periode debut / Start Period (MMM-YY)'))
                AND p4.period_name = UPPER(@variable('1 - Periode debut / Start Period (MMM-YY)'))
                AND cgl_interco_div.period_name = p2.period_name
        )
    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 Expert
    Avatar de Julien59
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 142
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    La variable @variable('1 - Periode debut / Start Period (MMM-YY)')) fait-elle référence à une seule valeur pour ses trois appels ou trois valeurs différentes ?
    1 seule valeur


    Pour ce qui est de la description de la table :

    period_name : mois + année, exemple : AVR-08
    period_year : année
    period_type : je ne sais pas trop ce que c'est, mais les valeurs possibles sont : 1, 2, month
    period_set_name : calendrier (FR, US, NE, UK...)

  6. #6
    Membre Expert
    Avatar de Julien59
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 142
    Par défaut
    Merci pour ta solution al1_24, elle fonctionne. Par contre je ne comprends pas où est passé mon objet : CGL_INTERCO_DIV.PERIOD_NAME ?

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Dans la clause WHERE de chaque sous-requête EXISTS
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] requete sql avec condition de dates
    Par Gerard.chery dans le forum VBA Access
    Réponses: 8
    Dernier message: 03/02/2014, 15h44
  2. Requetes SQL et conditions OR
    Par thtghgh dans le forum SAS Base
    Réponses: 0
    Dernier message: 13/01/2014, 14h12
  3. [AC-2007] Requete SQL avec condition
    Par makiavel974 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 21/06/2012, 10h11
  4. [Access] requete sql avec condition sur date
    Par qeja dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/03/2006, 23h54
  5. Requete SQL sur condition aléatoire
    Par Jey25 dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/02/2006, 20h51

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