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 :

select complexe à formuler


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Points : 71
    Points
    71
    Par défaut select complexe à formuler
    Bonjour

    je vais essayer de préciser clairement mon problème:

    soit 2 tables OBJ et EVT avec respectivement les champs code(pk),cat pour OBJ
    et obj,ppm,code(pk) pour EVT

    règle: tous les obj.code appartenant à une categorie obj.cat
    doivent avoir le ou les memes evt.ppm associés

    je voudrais donc lister tous les obj.code
    pour lesquels il manque un lien (evt.ppm,evt.obj) dans evt (en se referant à obj_cat)

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Points : 71
    Points
    71
    Par défaut cas exemple
    OBJ

    CODE CAT
    O1 C1
    O2 C2
    O3 C1
    O4 C3
    O5 C1
    O6 C2
    O7 C3
    O8 C2

    EVT

    CODE OBJ PPM
    1001 O1 P1
    1002 O1 P2
    1003 O2 P3
    1004 O3 P1
    1005 O4 P2
    1006 O5 P1
    1007 O6 P3
    1008 O7 P2

    RESULTAT ATTENDU

    OBJ PPM
    O8 P3 LES OBJETS DE CATEGORIE C2 ont P3
    O3 P2 LES OBJETS DE CATEGORIE C1 ont P1 et P2
    O5 P2 LES OBJETS DE CATEGORIE C1 ont P1 et P2

    si au mois un OBJ d'une CAT est lié à un PPM alors les autres oBJ de la meme CAT doivent l'etre aussi

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Si je comprends bien, tu veux chercher des couples objet/PPM pour lesquels il existe d'autres objets de la meme catégories pour lesquels il n'existe pas de correspondance avec le PPM... en essayant de le traduire en sql (qui est un vague dérivé de l'anglais ) ça donnerait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT E1.OBJ, E1.PPM from EVT E1
     WHERE EXISTS
       ( SELECT 1 FROM OBJ O1,OBJ O2 
             WHERE 
                 E1.OBJ = O1.CODE 
                 AND O1.CAT = O2.CAT 
                 AND NOT EXISTS
                   (SELECT 1 FROM EVT E2
                      WHERE O2.CODE = E2.OBJ
                       AND E2.PPM = E1.PPM )
       )
    non testé désolé

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Points : 71
    Points
    71
    Par défaut
    testé mais ça ne fonctionne pas car e1.ppm n'existe pas .(est justement le chainon manquant)

    je veux connaitre tous les couples OBJ/PPM manquants c'est à dire que tous les objets d'une meme categorie doivent avoir les meme liens PPM
    donc pour chaque objet verifier que tous les PPM liés aux autres objets de sa categorie lui sont aussi liés.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Le souci, c'est qu'un ppm peut exister dans un code mais pas dans un autre d'une même cat et vice-versa.
    Dans ce cas il faut identifier de manière unique tous les PPM d'une CAT ou d'un CODE (en transformant les lignes en colonne)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    FUNCTION F_PPM_CAT(p_cat IN VARCHAR2)
    RETURN VARCHAR2
    IS 
    	CURSOR c IS
    	SELECT DISTINCT PPM
    	FROM OBJ, EVT
    	WHERE obj.code = evt.code
    	AND obj.cat = p_cat
    	ORDER BY ppm;
    	v_retour VARCHAR2(4000);
    BEGIN
    	FOR r IN c 
    	LOOP
    		v_retour := LTRIM(v_retour || ','||r.ppm, ',');
    	END LOOP;
    	RETURN v_retour;
    END;
    FUNCTION F_PPM_OBJ(p_code IN VARCHAR2)
    RETURN VARCHAR2
    IS 
    	CURSOR c IS
    	SELECT DISTINCT PPM
    	FROM EVT
    	WHERE evt.code = p_code
    	ORDER BY ppm;
    	v_retour VARCHAR2(4000);
    BEGIN
    	FOR r IN c 
    	LOOP
    		v_retour := LTRIM(v_retour || ','||r.ppm, ',');
    	END LOOP;
    	RETURN v_retour;
    END;
     
    SELECT code, cat, F_PPM_OBJ(code), F_PPM_CAT(cat)
    FROM OBJ
    WHERE F_PPM_OBJ(code) <> F_PPM_CAT(cat)

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Points : 71
    Points
    71
    Par défaut pb liste dans champ
    J'ai testé merci ça fonctionne



    mais le pb est qu en mode liste dans un meme champ il faut faire encore un travail de comparaison et d'extraction des PPM manquants d'un OBJ pour regenerer les liens PPM,OBJ manquant

    il n'est donc pas possible le lister directement les couples OBJ,PPM manquants
    en 1 seule requete?

Discussions similaires

  1. SELECT Complexe sur plusieurs tables
    Par eowene dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/01/2007, 15h43
  2. SELECT complexe (pour moi)
    Par Zorglu dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/01/2007, 19h11
  3. [Access] requête de sélection complexe
    Par Nycos62 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 23/06/2006, 11h35
  4. [oracle 9i]select complex
    Par jaoued dans le forum Oracle
    Réponses: 1
    Dernier message: 14/06/2006, 12h09
  5. [oracle 9i]update à partir d'une selection complexe
    Par Requin15 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2006, 11h18

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