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

DB2 Discussion :

[DB2 sous MVS] Requête SQL


Sujet :

DB2

  1. #1
    Membre actif Avatar de neuropathie
    Inscrit en
    Janvier 2005
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 223
    Points : 201
    Points
    201
    Par défaut [DB2 sous MVS] Requête SQL
    Bonjour, est ce que vous pourrez me corriger la syntaxe de cette requête, je ne sais pas si le cross join existe en DB2, ou bien qu'il faille le remplacer avec UNION?
    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  lst.id_eqp
        ,   src.id_ctr
        ,   src.mod_paie
    FROM    matable AS src -- 2
        CROSS JOIN  -- 1
            (   SELECT  id_eqp
                FROM    matable
                GROUP BY id_eqp 
            )   AS lst -- 3
    WHERE   src.id_eqp  = 'F' -- 2
        AND NOT EXISTS -- 4
            (   SELECT  0
                FROM    matable AS ver
                WHERE   ver.id_eqp      = lst.id_eqp
                    AND ver.id_ctr   = src.id_ctr
                    AND ver.mod_paie     = src.mod_paie
            )
    ;

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par neuropathie Voir le message
    Bonjour, est ce que vous pourrez me corriger la syntaxe de cette requête, je ne sais pas si le cross join existe en DB2 ...
    Désolé, mais le "CROSS JOIN" n'existe pas en DB2 for z/OS ...
    Une jointure est soit INNER, LEFT, RIGHT ou FULL :
    joined-table

    Qu'est le "CROSS JOIN" d'ailleurs ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par neuropathie Voir le message
    Bonjour, est ce que vous pourrez me corriger la syntaxe de cette requête, je ne sais pas si le cross join existe en DB2, ou bien qu'il faille le remplacer avec UNION?
    Tout d'abord, nous avons la définition de la jointure croisée ici.

    Par ailleurs, je vois au moins deux choses qui posent problème pour DB2 :

    Citation Envoyé par neuropathie Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT  id_eqp
                FROM    matable
                GROUP BY id_eqp
    Pourquoi un GROUP BY sans agrégat ? N'est-ce pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT  DISTINC id_eqp
                FROM    matable
    Citation Envoyé par neuropathie Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        AND NOT EXISTS -- 4
            (   SELECT  0
                FROM    matable AS ver
                WHERE   ver.id_eqp      = lst.id_eqp
                    AND ver.id_ctr   = src.id_ctr
                    AND ver.mod_paie     = src.mod_paie
            )
    Habituellement, on utilise un SELECT * pour un EXISTS (voir l'explication).

    Au final, ceci devrait marcher :

    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  lst.id_eqp
        ,   src.id_ctr
        ,   src.mod_paie
    FROM    matable AS src, 
                (   SELECT  DISTINCT id_eqp
                FROM    matable
            )   AS lst 
    WHERE   src.id_eqp  = 'F'
        AND NOT EXISTS -- 4
            (   SELECT  *
                FROM    matable AS ver
                WHERE   ver.id_eqp      = lst.id_eqp
                    AND ver.id_ctr   = src.id_ctr
                    AND ver.mod_paie     = src.mod_paie
            )
    ;

  4. #4
    Membre actif Avatar de neuropathie
    Inscrit en
    Janvier 2005
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 223
    Points : 201
    Points
    201
    Par défaut
    Merci pour vos conseil,n au fait pour le cross join, j'ai remplacé par tout simplement une virgule. Maintenant ce que je veux faire c'est insérer le résultat de cette requête dans une table tout en ayant qu'une seule requête

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/05/2021, 15h31
  2. Recherche cours DB2 sous MVS
    Par usercobol dans le forum DB2
    Réponses: 4
    Dernier message: 06/08/2013, 04h50
  3. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  4. Syntaxe requête SQL dans JCL MVS pour lire sous AIX
    Par Claire de Morsang dans le forum DB2
    Réponses: 2
    Dernier message: 18/03/2008, 17h14
  5. affichage requête sql sous phppgadmin
    Par kerzut dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/02/2005, 12h39

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