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 :

ORACLE v. 9 : Vue avec des clauses WHERE


Sujet :

Langage SQL

  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 v. 9 : Vue avec des 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 Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    1) la requête ne renvoit rien (aucune erreur ?)
    2)
    c.CO_NUMINSEE = a.PROJ_INSEE AND c.CO_NUMINSEE = a.DEM_INSEE
    tu es sûre qu'un CO_NUMINSEE de la table "c" une chance d'être dubliqué dans la table "a" sur les deux champs DEM_INSEE et CO_NUMINSEE ?

  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
    La requête ne renvoit pas de résultats, mais fonctionne (pas d'erreur)

    Les champs de la table "a" sont indépendants les uns des autres et peuvent être remplis ou non. Le champs DEM_INSEE et PROJ_INSEE ne sont pas forcément égaux.
    Les champs de la table "a" contiennent des codes numériques qui font référence à la table "c" qui possède les mêmes codes.
    Donc deux champs de la table "a" pointent bien sur la même colonne de la table "c" et cherchent l'information à renvoyer dans une autre même colonne.
    J'espère ne pas être trop confuse.
    Il semble que la clause WHERE que j'utilise ne cherche que les enregistrements où :
    1. les 4 champs sont remplis,
    2. les PROJ_INSEE et DEM_INSEE sont égaux,
    3. les champs DEM_CODE_CM et PROJ_CODE_CM sont égaux.
    Ce qui n'arrive jamais, c'est donc pour cela que la vue ne contient aucune ligne.
    Si le champs est vide, je voudrai qu'il le laisse vide, mais qu'il prenne en compte la ligne quand même.
    C'est donc bien dans l'organisation du WHERE que ça cloche.
    Merci d'avance pour votre aide.

  4. #4
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par soffinette
    Les champs de la table "a" sont indépendants les uns des autres et peuvent être remplis ou non. Le champs DEM_INSEE et PROJ_INSEE ne sont pas forcément égaux.

    essaye qqch comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.CO_NUMINSEE = ISNULL(a.PROJ_INSEE, c.CO_NUMINSEE) AND c.CO_NUMINSEE = ISNULL(a.DEM_INSEE,c.CO_NUMINSEE)

    c'est du Transact-SQL, la syntaxe varie peut-être sous Oracle

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Pour Oracle, remplacer ISNULL par NVL

Discussions similaires

  1. [2005 Express] un Update sur un top avec des clauses Where
    Par zooffy dans le forum Développement
    Réponses: 7
    Dernier message: 14/09/2009, 09h16
  2. ORACLE 9.2 : Création d'une vue avec plusieurs clauses WHERE
    Par soffinette dans le forum Administration
    Réponses: 4
    Dernier message: 01/02/2007, 10h51
  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. [super requete] Dumper un model avec une clause where
    Par elievar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2005, 17h05
  5. Vues avec des "case"
    Par jfphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2005, 12h17

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