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

Oracle Discussion :

Créer Vue multicritère


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bbo1991
    Profil pro
    oidfsdfsd
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : oidfsdfsd

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Par défaut Créer Vue multicritère
    Bonjour à tous,
    J'ai deux tables: une table "client" et une table "critereSuspect".
    Dans chaque table critereSuspect il y a différents critères qui qualifient un client jugé suspect: on a par exemple un numéro de téléphone douteux donc tout client qui l'aura sera jugé suspect, un critère peut se composer de divers champs: un client de type "Particulier" qui fait un achat entre 15 000 et 10 000 euros par exemple est suspect, dans ce cas on observe le type et le montant.

    Chaque ligne de "critereSuspect" se compose donc des champs suivant : "typeClient", "typeachat","montantAchatMaximum","montantAchatMinimum", "tel".

    Ce que je voudrai faire maintenant c'est créer une vue qui m'affiche tous les clients que je juge suspects : je dois donc tester chaque client avec chaque ligne de ma table "critereSuspect" et là je bloque

    Comment faire pour obtenir les critères de chaque ligne et les tester une par une ?
    Autre blocage pour certaines lignes de la table "citereSuspect" on ne spécifie par exemple que le numéro de téléphone dans ce cas là comment dire à Oracle de ne pas tester les autres champs????
    Quelqu'un a une solution à proposer?

  2. #2
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    En conceptuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT T1.* from Client T1 WHERE EXISTS
    (
        select 1 FROM critereSuspect T2 WHERE
       (T1.typeClient=T2.typeClient AND T1.Montant>T2.MontantMax)
       OR
       (T1.tel=T2.tel)
       OR
       ...
    )
    Ca va te donner la liste des clients qui ont au moins un critère suspect.

  3. #3
    Membre confirmé Avatar de bbo1991
    Profil pro
    oidfsdfsd
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : oidfsdfsd

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Par défaut
    Mouais ça j'y avais déjà pensé mais voyez-vous la liste des critères suspects est dynamique, donc ce qui se trouve ( ) après les clauses WHERE peuvent varier selon les lignes de la table "critereSuspect".

    L'administrateur de l'appli peu rajouter de nouveaux numéros de tel douteux, ou encore d'autres critères ou en supprimer sa guise.

    La liste des clients suspects variant selon les valeurs des critères suspects....

    Donc il nous faut un moyen pour dynamiser le contenu des clauses WHERE ....

  4. #4
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Tu peux nous donner un exemple sur un jeu de données ?

  5. #5
    Membre confirmé Avatar de bbo1991
    Profil pro
    oidfsdfsd
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : oidfsdfsd

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Par défaut
    Ok,
    Soit par exemple la table "critereSuspect".
    Cette table possède les champs suivants:
    "typeClient", "typeachat","montantAchatMaximum","montantAchatMinimum" et "tel".

    Dans un premier temps cette table compte 2 enregistrements:
    -dans le premier seul le champ "tel" est renseigné, les autres champs sont vides, avec "tel"=33658794
    -dans le second on a "typeClient"=particulier, "montantAchatMaximum"=15000,"montantAchatMinimum"=10000 les autres champs sont vides.

    Mais voilà, dans un second temps on a décidé d'ajouter de nouveaux enregistrements à la table "critereSuspect", en plus des deux critères précédents on a ajouté deux nouvelles lignes:
    - "typeachat"=Au comptant, "montantAchatMinimum"=50000, les autres champs seront vides
    - "typeachat"=Crédit, "tel"=3366889547, les autres champs à vides

    Et il va falloir tester chaque client avec tous ces critère pour obtenir la liste des clients suspects, bref il va nous falloir une vue dynamique....

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Bonjour, bonne année et tout ça...

    Je comprends pas en quoi la proposition de nuke_y ne va pas, une vue par définition est dynamique...

    Il faut que tu poses clairement tous tes cas possibles.
    D'après ce que j'ai cru comprendre tu voudrais qu'un "null" signifie qu'il ne faut pas faire de test. Tu peux donc faire des critères du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT T1.* FROM Client T1 WHERE EXISTS
    (
        SELECT 1 FROM critereSuspect T2 WHERE
             (T1.typeClient=T2.typeClient OR  T2.typeClient  is null) 
       AND (T1.typeAchat=T2.typeAchat OR  T2.typeAchat  is null) 
       AND (T1.Montant>T2.MontantMax OR T2.MontantMax is null )
       AND (T1.Montant <T2.MontantMin  OR T2.MontantMin is null )
       AND (T1.tel=T2.tel OR T2.tel is null)
    )
    Il faut bien comprendre qu'une vue n'est jamais qu'une requête stockée donc lorsque tu vas rajouter ou enlever des lignes dans ta table de critères le résultat de la vue suivra.

Discussions similaires

  1. [requète sql] Créer une vue ordonnée
    Par gangsoleil dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/01/2006, 18h34
  2. Réponses: 7
    Dernier message: 23/05/2005, 10h12
  3. Créer une vue avec des requêtes UNION ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2005, 12h37
  4. [Plugin] Créer un modèle et lier un éditeur avec une vue
    Par freekk91 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 27/03/2005, 20h00
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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