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

Administration Oracle Discussion :

ORACLE 9.2 : Création d'une vue avec plusieurs clauses WHERE


Sujet :

Administration Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Points : 6
    Points
    6
    Par défaut ORACLE 9.2 : Création d'une vue avec plusieurs clauses WHERE
    Bonjour,
    Je possède 3 tables :
    - la table COMMUNES c,
    - la table VOIES_CM v,
    - la table ADS1 a.
    Je souhaite faire une vue de la table "a" en manipulant les données pour obtenir des champs des tables "v" et "c".

    Voici le code de ma requête :

    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
     
    CREATE VIEW V_ADS1 (NUM_FEUILLE, TYPE_ADS, NUM_DOSSIER, DATREC, PROJ_INSEE, DEM_INSEE, GEOCODE, CO_NOM, ANNEE, TYPE_COMMUNE, DEM_CODE_CM, PROJ_CODE_CM) AS
    SELECT 	NUM_FEUILLE,
    		TYPE_ADS,
    		NUM_DOSSIER,
    		DATREC,
    		PROJ_INSEE,
    		GEOCODE,
    		c.CO_NOM,
    		c.CO_NOM,
    		SUBSTR(DATREC,7,4),
    		CASE 	WHEN TYPE_ADS='PC' THEN CO_NOM||' - '||'Permis de construire'
    				WHEN TYPE_ADS='PD' THEN CO_NOM||' - '||'Permis de détruire'
    				WHEN TYPE_ADS='CU' THEN CO_NOM||' - '||'Certificat d''urbanisme'
    		END,
    		 v.TOPONYME_VILLE,
    		 v.TOPONYME_VILLE
    FROM ADS1 a, COMMUNES c, VOIES_CM v
    WHERE c.CO_NUMINSEE = a.PROJ_INSEE AND c.CO_NUMINSEE = a.DEM_INSEE AND v.CODE_CM = DEM_CODE_CM AND V.CODE_CM = PROJ_CODE_CM
    Lorsque j'exécute cette requête, je n'obtiens aucun résultat.
    Pourtant je dois obtenir un enregistrement pour chaque enregistrement présent dans la table "a".
    Peut-être que les clauses WHERE pointant sur le même champs des tables "c" et "v" sont en conflit.

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    ta colonne c.CO_NUMINSEE est jointe avec 2 colonnes différentes de ta table a (ADS1)... c'est normal ça ?
    idem pour la colonne V.CODE_CM qui est jointe avec 2 colonnes (je ne sais pas de quelle table, pas de préfixe)...

    est-ce que ces doubles jointures sont toujours renseignées (champs Not Null) ou serais-ce plutôt ou l'un ou l'autre...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Effectivement les tables COMMUNES et VOIES_CM contiennent les informations en chaine de caractères. La table ADS1 contient des informations sous forme de valeurs numériques.
    Ces valeurs numériques sont les mêmes que dans les tables COMMUNES et VOIES_CM.
    Donc j'ai bien deux champs CODE_INSEE dans ADS1 sous forme numériques et je veux récupérer les valeurs en chaine de caractère correspondantes dans l'autre table.
    J'ai testé les valeurs null ou non null depuis que j'ai posté ma question, et j'ai également ajouté des parenthèses dans les clauses WHERE.
    Toujours pas de résultats donc si vous pouvez m'aider ....
    Merci d'avance

  4. #4
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    En fait, où je voudrais en venir est la question suivante :

    est-on sûr que pour 1 no c.CO_NUMINSEE, ce même no se retrouve toujours dans les 2 champs référencés de la table ADS1.

    question identique pour le no V.CODE_CM référencé dans 2 autres champs... est-on sûr que c'est toujours les 2 champs qui sont renseignés avec ce No ?

    si non, si on est dans le cas où on veut tester le cas où le no c.CO_NUMINSEE est référencé SOIT par a.PROJ_INSEE SOIT par a.DEM_INSEE il faut alors soit déclarer les même tables plusieurs fois et faire jointures différenciées ou alors faire des jointures externes...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    En fait, j'ai quatre colonnes, où les champs peuvent être remplis ou non. Je peux donc avoir 4 remplis, 4 non remplis, 3 remplis et un NULL ... et ainisi de suite.
    Les deux champs qui pointent sur la même colonne d'une autre table peuvent être identiques ou différents.
    Pour le champs PROJ_INSEE par exemple, je voudrais, c'est que si le champ est vide, il laisse le champs vide dans ma vue, par contre si le champs est rempli, alors il faut qu'il aille chercher la valeur dans la table "c" sur la colonne CO_NOM avec a.PROJ_INSEE=c.CO_NUMINSEE.
    Idem pour le champs DEM_INSEE.
    Sauf que ces deux champs sont indépendants, mais pointent tous les deux sur le même champs d'une autre table.
    Voilà, j'espère que mes explications ne sont pas trop confuses.
    Merci d'avance

Discussions similaires

  1. optimisation d'une vue avec plusieurs sous-requêtes
    Par jean62 dans le forum Développement
    Réponses: 7
    Dernier message: 08/08/2012, 15h29
  2. Création d'une vue avec un case
    Par Pauline65 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 14/08/2009, 17h07
  3. [Oracle] pb à la création d'une vue
    Par stephenking dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/04/2008, 02h13
  4. Réponses: 8
    Dernier message: 10/12/2007, 16h27
  5. ORACLE v. 9 : Vue avec des clauses WHERE
    Par soffinette dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/02/2007, 14h11

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