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 :

Création d'une vue


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Par défaut Création d'une vue
    Bonjour à tous,

    Voilà, je fais face à un problème de requête SQL.
    Je suis en train de créer un module de recherche multi-critères.
    Dans l'exemple ci-dessous :
    Cible 1 = hommes ayant 0 enfant (i.e. Sexe = Homme ET enfants = 0)
    Cible 2 = Femme ayant 3 enfants (i.e. Sexe = Femme ET enfants = 3)

    J'ai 2 tables :
    T_CIBLE (3 colonnes : ID; Nom_crière; Valeur_critère)
    1; Sexe; Homme
    1; Enfants; 0
    2; Sexe; Femme
    2; Enfants; 3

    T_PERSONNE (3 colonnes : ID; Nom_crière; valeur_critère)
    1; Sexe; Homme
    1; Région; Ile de France
    1; Enfants; 0
    2; Sexe; Homme
    2; Région; Ile de France
    2; Enfants; 1
    3; Sexe; Femme
    3; Région; Province
    3; Enfants; 2
    4; Sexe; Femme
    4; Région; Province
    4; Enfants; 3

    Là où ça se complique (et où je sèche), c'est que j'aimerai créer une vue qui m'affiche le résultat.
    On aurait alors :
    V_RESULTAT (2 colonnes : T_CIBLE.ID, T_PERSONNE.ID)
    1; 1
    2; 4

    J'ai absolument besoin d'une vue car le résultat doit être dynamique, et je ne souhaite pas stocker de valeurs intermédiaires, ni tuiliser de triggers.
    Ainsi, dès qu'une cible est créée, on peut avoir les personnes correspondant à ces critères.

    Par avance, merci pour toute aide.

    Xris

  2. #2
    Membre chevronné Avatar de Cerberes
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 328
    Par défaut
    Quel SGBD?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Par défaut
    Pardon pour l'oubli : MS SQL 8

    Xris

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT CIBLE_ID, PERSONNE_ID
    FROM (SELECT C.ID AS CIBLE_ID, P.ID AS PERSONNE_ID, COUNT(*) AS Nombre
          FROM T_PERSONNE P JOIN T_CIBLE C ON P.Nom_Critere    = C.Nom_Critere 
                                          AND P.Valeur_Critere = C.Valeur_Critere
          GROUP BY C.ID, P.ID) A
         JOIN
         (SELECT ID AS CIBLE_ID, COUNT(*) AS Nombre
          FROM T_CIBLE
          GROUP BY ID) B ON A.CIBLE_ID = B.CIBLE_ID
                        AND A.Nombre   = B.Nombre
    Pas testé...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Par défaut Bingo !
    Mille merci, ça marche.
    J'ai juste eu à rajouter A. sur le select de Cible_ID :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT A.CIBLE_ID, PERSONNE_ID 
    FROM (SELECT C.ID AS CIBLE_ID, P.ID AS PERSONNE_ID, COUNT(*) AS Nombre 
          FROM T_PERSONNE P JOIN T_CIBLE C ON P.Nom_Critere    = C.Nom_Critere 
                                          AND P.Valeur_Critere = C.Valeur_Critere 
          GROUP BY C.ID, P.ID) A 
         JOIN 
         (SELECT ID AS CIBLE_ID, COUNT(*) AS Nombre 
          FROM T_CIBLE 
          GROUP BY ID) B ON A.CIBLE_ID = B.CIBLE_ID 
                        AND A.Nombre   = B.Nombre
    [Modération : Balises codes ajoutées par LeoAnderson]

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Désolé pour le A, c'est ce qui arrive quand on ne peut pas tester.

    N'oublie pas le tag [Résolu]

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 52
    Par défaut je clos le poste.
    Encore merci !

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

Discussions similaires

  1. Erreur de syntaxe sur la création d'une vue.
    Par cgougeon dans le forum Installation
    Réponses: 3
    Dernier message: 09/09/2005, 11h00
  2. création d'une vue ...help
    Par menoce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/07/2005, 21h30
  3. Réponses: 26
    Dernier message: 27/04/2005, 11h29
  4. Réponses: 7
    Dernier message: 12/07/2004, 22h30
  5. [Plugin] Création d'une vue dynamiquement
    Par The Bonze dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 15/06/2004, 13h23

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