Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mai 2011
    Messages : 139
    Points : 13
    Points
    13

    Par défaut Requête incrémentale avec tests

    Bonjour,

    je suis devant une difficulté que je vais essayer de détailler le plus possible.

    J'ai une vue (que je vais appeler v1) dans laquelle je pioche des données dans une autre vue (v2) et des tables.

    Je récupère les données (int) d'une colonne dans une de ces tables.
    Les valeurs de cette colonne n'apparaissent qu'une seule fois pour chaque donnée de la vue v2 que je récupère, SAUF pour une valeur (toujours la même, 50) qui apparait plusieurs fois pour la même donnée de v2.
    Je voudrais donc que cette valeur s'incrémente d'elle même en fonction du nombre de fois où elle apparait pour la même valeur de v2.

    Par exemple :

    v2_Num :
    10
    20
    30
    40
    50
    60


    valeurTableY:
    13
    14
    15
    16
    17
    17
    17
    18


    Je voudrais avoir, dans v1 :
    13 10
    14 20
    15 30
    16 40
    17 50
    17 51
    17 52
    18 60


    J'essaye de faire ça avec des COUNT(DISTINCT) via une vue intermédiaire, le problème est que ça m'affecte toutes les valeurs du coup....
    Est-il possible de faire tous les tests nécessaire avec 1 seule requête ou je dois passer par une procédure ?

    Merci !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 5 607
    Points : 12 927
    Points
    12 927

    Par défaut

    Je ne comprends déjà pas comment tu associes v2_Num et valeurTableY...

    à trop simplifier ton besoin, tu as oublié des informations indispensables !

    Relis un peu les Règles du forum Langage SQL à lire par tous
    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 titre de Membre du Club
    Homme Profil pro
    Inscrit en
    mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mai 2011
    Messages : 139
    Points : 13
    Points
    13

    Par défaut

    Autant pour moi

    Je vais essayer de mieux détailler tout en restant compréhensible.
    Bon déjà je suis sous SQL Server 2008

    J'ai 3 tables (faux-noms) :
    - TypeVisite (id: TypeVisite_cle)
    - Visite (id: Visit_cle). Une visite possède un TypeVisite.
    - Personne (id: Personne_cle). Une Personne possède une Visite.

    et une vue :
    - InfosPersonne qui regroupe plein d'infos et possède Personne_cle

    Chaque Visite doit être unique à chaque patient, sauf la Visite de TypeVisite n°50 qui peut apparaitre plusieurs fois.
    Un TypeVisite a donc une colonne numVisite et une Visite a une colonne dateVisite.

    Mon objectif est de créer une vue regroupant notammant chaque patient et les visites qu'il a effectué.
    Le problème est que, dans ma vue, le numéro 50 apparait plusieurs fois et la personne qui va importer ma vue veut absolument la visite 50 sous la forme 51,52,53,54 ... dans l'ordre où elle les a effectué...

    J'ai donc essayé via une vue intermédiaire mais je sais pas comment m'y prendre pour que seule la visite de typevisite 50 soit affectée
    De plus je ne veux pas de group by direct vu que je veux que toutes mes visites soient affichées...

    Est ce que c'est un peu plus compréhensible comme ça ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 5 607
    Points : 12 927
    Points
    12 927

    Par défaut

    Dois-je en déduire que Visite est la table d'association entre Personne et TypeVisite, avec pour clé composée (Personne_Cle, TypeVisite_Cle, Date_Visite) ?
    Code :
    1
    2
    3
    4
    5
    6
    7
    SELECT  Personne_Cle
        ,   TypeVisite_Cle + RANK() OVER (PARTITION BY Personne_Cle, TypeVisite_Cle ORDER BY Date_Visite) - 1
    FROM    Visite
    ORDER BY Personne_Cle
        ,   TypeVisite_Cle
        ,   Date_Visite
    ;
    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
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mai 2011
    Messages : 139
    Points : 13
    Points
    13

    Par défaut

    C'est à peu près ça, j'ai repris le rank over dans mon schéma exact et c'est ce qu'il me fallait !!!!
    Je n'y avais pas du tout penser j'y penserai à l'avenir

    Merci !

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •