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

Autres SGBD Discussion :

Création d'une extraction avec multiple union


Sujet :

Autres SGBD

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Création d'une extraction avec multiple union
    Bonjour,

    Je sollicite ce forum pour trouver une méthode permettant de faire extraction en fonction d'un nombre d'enregistrement en focntion de plusieurs critères.

    Ex :
    une table source a je souhaite faire extraire :

    • 2 lignes de la typo 1 du site 1
    • 3 lignes de la typo 2 du site 1
    • 2 lignes du site 2 de la typo 2


    Ces Items seraient dans une table critère du type : Site, Typo, Nb_lignes


    Je voudrai éviter une cascade d'unions. Faut il utiliser les requêtes récursives?


    ID_APPEL Site TYPO
    aaaa s1 t1
    aaab s1 t1
    aaac s1 t1
    aaad s1 t2
    aaae s1 t2
    aaad s1 t3
    aaaa s1 t1
    aaab s1 t1
    aaac s1 t1
    aaad s1 t2
    aaae s1 t2
    aaad s1 t3
    aaaf s1 t1
    aabb s2 t1
    aabc s2 t1
    aabd s2 t2
    aabe s2 t2
    aabd s2 t3


    Système TERADATA ou ORACLE

    Merci à vous

  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 805
    Points
    30 805
    Par défaut
    Si j'ai bien compris ton besoin, il se résoudrait comme cela avec Oracle :
    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
    with    dat
        as  (   select  id_appel
                    ,   site
                    ,   typo
                    ,   row_number() over (partition by site, typo order by id_appel)  as no_ligne
                from    matable
            )
    select  dat.id_appel
        ,   dat.site
        ,   dat.typo
    from    dat
        inner join
            critere crt
            on  crt.site    = dat.site
            and crt.typo    = dat.typo
            and crt.nombre  >= dat.no_ligne
    ;
    Pour Teradata, c'est à peu près la même chose mais en plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select  dat.id_appel
        ,   dat.site
        ,   dat.typo
    from    matable dat
        inner join
            critere crt
            on  crt.site    = dat.site
            and crt.typo    = dat.typo
    qualify crt.nombre  >= row_number() over (partition by dat.site, dat.typo order by dat.id_appel)
    ;
    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
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    En effet tu avais tout a fait compris le besoin et ça fonctionne je te remercie.

    Pour ma gouverne je ne connaissez pas le mot clé Qualify et du reste j'ai du mal à comprendre le fonctionnement de la dernière ligne de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qualify crt.nombre  >= row_number() over (partition by dat.site, dat.typo order by dat.id_appel
    Une petite explication complémentaire stp?


    Merci bien

  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 805
    Points
    30 805
    Par défaut
    QUALIFY c'est un peu comme HAVING à la différence qu'on l'utilise avec des fonctions de regroupement analytiques.
    Si tu as compris comment fonctionnait la requête Oracle, la requête Teradata fonctionne exactement de la même manière sans avoir besoin de passer par la rédaction d'une sous-requête.
    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. Création d'une table avec foreign key.
    Par Paulinho dans le forum Débuter
    Réponses: 6
    Dernier message: 01/12/2005, 18h47
  2. création d'une carte avec navigation du type mappy
    Par BernardT dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 30/10/2005, 01h24
  3. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  4. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58
  5. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34

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