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 :

Création d'une vue à partir d'une table


Sujet :

SQL Oracle

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 243
    Par défaut Création d'une vue à partir d'une table
    Oracle 11g,

    Bonjour à tous,

    Je souhaite créer une vue à partir d'une table,

    par exp: j'ai une table avec les colonnes A, B, C, D ,E

    je souhaite créer une vue à partir de cette table à cette condition, count(conat(col A, colB)) > 1.

    Quelqu'un a sait comment créer cette vue, en vous remerciant par avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Création d'une vue en Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW emp_view AS 
       SELECT last_name, salary*12 annual_salary
       FROM employees 
       WHERE department_id = 20;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 243
    Par défaut
    Merci pour ta réponse,

    Je connais la commande pour créer la vue, mais ma question est comment mettre en place la condition que j'ai mis.

    count(concat(col A,Col B)) > 1

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Cela est possible à l'aide de la clause
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HAVING count(...)
    GROUP BY ..

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 31
    Par défaut
    Citation Envoyé par coolmek Voir le message
    count(concat(col A,Col B)) > 1
    Qu'est ce que tu faire avec ce bout de code?
    décris-moi ce que doit faire la requête.

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Visiblement la demande est de créer une vue qui répond au critère d'une clause HAVING du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE VIEW emp_view AS 
       SELECT A, B
       FROM MyTable 
       HAVING count(concat(col A,Col B)) > 1
       GROUP BY A, B
    Du moins c'est ce que j'en ai déduit...

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 608
    Billets dans le blog
    10
    Par défaut
    Ou plutôt (group by avant having)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW emp_view AS 
       SELECT ColA, ColB
       FROM MyTable 
       GROUP BY ColA, ColB
       HAVING count(concat(ColA, ColB)) > 1
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW emp_view AS 
       SELECT ColA, ColB
       FROM MyTable 
       WHERE concat(ColA, ColB) is not null
       GROUP BY ColA, ColB

  8. #8
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Ou plutôt (group by avant having)...
    Sous Oracle, il est tout à fait valable, et depuis longtemps, de mettre HAVING avant GROUP BY.
    C'était déjà documenté sous Oracle 8i par exemple.

    Et votre deuxième formule avec le WHERE à la place du HAVING n'est pas équivalente à la première.
    Avec le HAVING, on sélectionne les groupes ayant au moins 2 lignes ; ce n'est plus le cas avec votre WHERE.

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 608
    Billets dans le blog
    10
    Par défaut
    Oups j'ai filtré > 0 en effet

    par contre la syntaxe non normative est a éviter de préférence ne serait-ce que pour des raisons de portabilité

  10. #10
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Je rajoute mon petit grain de sel : le HAVING n'a pas besoin du GROUP BY pour fonctionner, contrairement à ce qu'on entends souvent.

  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
    Citation Envoyé par Ikebukuro Voir le message
    Je rajoute mon petit grain de sel : le HAVING n'a pas besoin du GROUP BY pour fonctionner, contrairement à ce qu'on entends souvent.
    Pourriez-vous expliciter ? Pour au moi il existe toujours un sauf que parfois il est sous-entendu.

Discussions similaires

  1. creer une vue à partir d'une procédure dtockée
    Par kayuyu dans le forum Développement
    Réponses: 4
    Dernier message: 01/09/2010, 23h21
  2. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  3. agir sur une vue à partir d'une autre vue
    Par gasper06 dans le forum Flex
    Réponses: 1
    Dernier message: 26/05/2009, 15h13
  4. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  5. Réponses: 5
    Dernier message: 22/05/2008, 14h42

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