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

SQL Oracle Discussion :

Vue ramenant ligne particulière


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Devlop++
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut Vue ramenant ligne particulière
    Salut,
    je suis sur Oracle Release 9.0.1.0.1

    Je désire crée une vue sur les tables :

    EMP( EMPNO NOT NULL NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) )
    PHOTO( ID NOT NULL NUMBER(7) , DESC VARCHAR2(30), TYPE VARCHAR2(30), BLOB NOT NULL LONG RAW, EMPNO NOT NULL NUMBER(4) )

    EMP( EMPNO , ENAME , JOB , MGR , HIREDATE , SAL , COMM , DEPTNO )
    PHOTO( ID , DESC , TYPE , BLOB , EMPNO )

    Les tables contiennent respectivement :
    - données de l’employé
    - photos des employés, plus une photo spéciale (cliché vide identifié par PHOTO.ID = 0 et PHOTO.EMPNO = 0 qui contient le texte « Photo Non Disponible »).

    J’ai crée une vue comme suit :
    Code :
    CREATE OR REPLACE VIEW PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB) AS
    SELECT EMP.EMPNO, EMP.DEPTNO, PHOTO.ID, PHOTO.BLOB
    FROM PHOTO,EMP
    WHERE ( EMP.EMPNO = PHOTO.EMPNO(+) ) WITH READ ONLY

    PH_VIEW_DEPT (
    V_EMPNO, V_DEPTNO, V_ID, V_BLOB )
    NB:
    “EMP.EMPNO = PHOTO.EMPNO(+)” pour ramené aussi les employé qui n’ont pas de photo (je crois jointure externe)

    C'est fonctionnel et elle me ramène les photos des agents (ceux qui ont des photos) pour les autres qui n'ont pas, les champs PHOTO.ID et PHOTO.BLOB sont nulle, je désire modifié le verbe select de ma vue a fin de ramené pour les employés n'ayant pas de photos le cliché vide "PHOTO.id=0".

    Je trouve pas comment procéder, s'il vous plait aidez-moi.
    Merci.
    PS: j'ai simplifié le problème avec les tables demos d'oracle, pour ensuite l'adapter pour mes tables.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    tu veux quoi ? Avoir photo.id égale à 0 à la place de NULL quand il n'y a pas de photo ou exclure les lignes des employés qui n'ont pas de photo ?

    PS : merci d'utiliser les balises CODE et QUOTE plus lisible même si tu mets des couleurs

  3. #3
    Membre confirmé Avatar de Devlop++
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Citation Envoyé par orafrance Voir le message
    tu veux quoi ? Avoir photo.id égale à 0 à la place de NULL quand il n'y a pas de photo ou exclure les lignes des employés qui n'ont pas de photo ?

    PS : merci d'utiliser les balises CODE et QUOTE plus lisible même si tu mets des couleurs
    Oui je veux avoir photo.id égale à 0 à la place de NULL quand il n'y a pas de photo.

    Citation Envoyé par mnitu Voir le message
    La fonction Nvl te permet de remplacer une "valeur" NULL par une autre valeur.
    Dans NVL tu donne explicitement la valeur qui va remplacer null, or la valeur que je désire est dans la table photo ( PHOTO.BLOB)

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    .. les champs PHOTO.ID et PHOTO.BLOB sont nulle...
    Citation Envoyé par Devlop++ Voir le message
    Oui je veux avoir photo.id égale à 0 à la place de NULL quand il n'y a pas de photo.
    ...
    Nvl(photo_id,0)

  5. #5
    Membre confirmé Avatar de Devlop++
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Nvl(photo_id,0)
    oui, mais je veux avoir la photo ayant l' ID = 0 donc, le contenu stocker dans PHOTO.BLOB (LONg RAW) qui est une image.
    Merci

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par Devlop++ Voir le message
    oui, mais je veux avoir la photo ayant l' ID = 0 donc, le contenu stocker dans PHOTO.BLOB (LONg RAW) qui est une image.
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE VIEW PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB) AS
    SELECT EMP.EMPNO, EMP.DEPTNO, PHOTO.ID, PHOTO.BLOB
    FROM PHOTO,EMP
    WHERE ( EMP.EMPNO = PHOTO.EMPNO )
    UNION ALL
    SELECT EMP.EMPNO, EMP.DEPTNO, 0, (SELECT PHOTO.BLOB FROM PHOTO WHERE id=0)
    FROM EMP
    WHERE EMP.EMPNO NOT IN (SELECT EMPNO FROM PHOTO)
    WITH READ ONLY

  7. #7
    Membre confirmé Avatar de Devlop++
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    C'est pour le besoin d'une form (forms 6), car l'item image n'est peupler que suite a une interogation execute_query alors ce cliché vide doit etre dans la vue, forms n'accepte pas le code select BLOB into :BLOCK.ITEM from table (avec :BLOCK.ITEM de type image)

    Merci.
    et encore merci pour m'avoir répondu aussi vite.

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par Devlop++ Voir le message
    Dans NVL tu donne explicitement la valeur qui va remplacer null, or la valeur que je désire est dans la table photo ( PHOTO.BLOB)
    euh... ouais mais si photo.id est NULL comment tu sais quel photo faut aller prendre dans la table Photo ?

  9. #9
    Membre confirmé Avatar de Devlop++
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Citation Envoyé par orafrance Voir le message
    euh... ouais mais si photo.id est NULL comment tu sais quel photo faut aller prendre dans la table Photo ?
    C'est tout a fait ça, quand c'est null je doit joindre avec les données de l'employé la photo portant l' ID = 0 et son BLOB qui est le cliché vide et elle est dans la table avec le reste des photos

  10. #10
    Membre confirmé Avatar de Devlop++
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Je vais tester et je reposte
    Merci

  11. #11
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    La fonction Nvl te permet de remplacer une "valeur" NULL par une autre valeur.

Discussions similaires

  1. Suppression d'une ligne particulière dans un fichier texte
    Par Aymeric41 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 29/08/2011, 14h53
  2. php, suppression ligne particulière tableau
    Par cosmexpert dans le forum Langage
    Réponses: 5
    Dernier message: 16/04/2010, 16h33
  3. créer une macro en fonction d'une ligne particulière
    Par antfo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2010, 18h22
  4. récupérer une ligne particulière d'un fichier
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 20/08/2007, 15h00
  5. Suppression d'une ligne particulière d'un mémo
    Par BXDSPORT dans le forum Delphi
    Réponses: 3
    Dernier message: 14/08/2006, 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