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 :

Requête incrémentale avec tests


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    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
    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 778
    Points
    30 778
    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
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    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
    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 778
    Points
    30 778
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    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.

Discussions similaires

  1. Requête sql avec test d'une variable
    Par missmiss89 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 30/06/2011, 11h42
  2. [MySQL] Requête sql avec test d'une variable très longue
    Par missmiss89 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/06/2011, 15h25
  3. cas d'école : Requête combinée avec test sur une colonne
    Par teuzadur dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 23/06/2011, 15h14
  4. requête d'ajout avec test
    Par pasb71 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/05/2011, 15h38
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 12h37

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