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 :

Requete sur VUE


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut Requete sur VUE
    Salut a tous !

    Je vous expose mon problème :
    Je crée une vue MAVUE de la jointure table1, table2 (par exemple)

    J'ai donc tous mes champs de la vue tel que A, B, C, D, E

    Je fais
    Ca marche

    Je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A, C, D, E FROM MAVUE
    Ca ne marche pas

    Je suis obligé de respecter l'ordre et de n'oublier aucun champ !

    Je peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A, B, C FROM MAVUE
    Mais je ne peux pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT C, B, A FROM MAVUE
    Qu'est ce que c'est que ce délire ? J'ai lu partout que je pouvais utiliser ma vue comme une table ! Hors c'est totalement faux !
    Please help !
    Merci d'avance a tous !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par madevilts Voir le message
    Ca ne marche pas
    C'est à dire ?
    Peut-on connaitre le message d'erreur ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Bien sur !
    Message d'erreur :
    ORA-00918: column ambiguously defined


    Je viens de tester différentes requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT A,B,C,D,E FROM MAVUE --Ok
    SELECT D,C,A,E,B FROM MAVUE --Ok, on requete les 5 premiers champs de la table, ils sont seulement dans le désordre
    SELECT A,B,C FROM MAVUE --Ok
    SELECT C,A,B FROM MAVUE --Ok
    SELECT B,C FROM MAVUE --Pas Ok, on ne requete pas le premier champ...
    SELECT C,B FROM MAVUE --Pas Ok, idem
    SELECT A,C FROM MAVUE --Pas Ok, on requete 2 champs qui ne se suivent pas dans la vue
    SELECT B,D FROM MAVUE --Pas Ok, pas le premier champ, ne se suivent pas
    Apparament, il faut toujours sélectionné X premiers champs de la vue, après l'ordre importe peu.

    Pour les requetes que j'ai noté "Pas Ok", toujours la meme erreur : 00918 comme noté plus haut.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Je viens de trouver la solution. Elle me parait tout betement halucinante.

    Pour créer ma vue j'ai utilisé la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE1 JOIN TABLE2 ON ...
    Ce qui pose problème.
    Maintenant je crée ma vue en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A,B,C,D,E FROM TABLE1 JOIN TABLE2 ON ...
    Ce qui au final revient strictement à la même chose, là, ça marche !

    Quelqu'un a une explication ?

  5. #5
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par madevilts Voir le message
    Je viens de trouver la solution. Elle me parait tout betement halucinante.

    Pour créer ma vue j'ai utilisé la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE1 JOIN TABLE2 ON ...
    Ce qui pose problème.
    Maintenant je crée ma vue en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A,B,C,D,E FROM TABLE1 JOIN TABLE2 ON ...
    Ce qui au final revient strictement à la même chose, là, ça marche !

    Quelqu'un a une explication ?
    tes tables 1 et 2 n'auraient pas des champs ayant le même nom par hasard ?
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par miloux32 Voir le message
    tes tables 1 et 2 n'auraient pas des champs ayant le même nom par hasard ?
    Ouais, ça me semble être le problème...
    Et utiliser select * me semble être une belle source d'erreur potentiel - à éviter.
    Celà dit tu nous aurais fournis directement le code complet de ta vue et l'erreur que tu obtenais, on aurait été plus vite...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Non ce n'est pas du tout ça.

    Le problème vient uniquement du fait de créer une vue en utilisant SELECT *.
    En fait, je préfixe tous mes champs par 3 lettres donc c'est impossible d'avoir des champs identiques avec 2 tables différentes.

    Le pire, j'utilise sqldeveloper pour créer ma vue. Je crée ma vue avec SELECT * puis je regarde le code SQL postgénéré de création de vue. Dans ce code, j'ai la liste de tous les champs, je récupère cette liste que je colle à la place du "*" et je recrée ma vue comme ça.
    Donc en fait, si vous requetez en SELECT * ou si vous faites SELECT tousleschamps[...], normalement c'est pareil mais lors de la création d'une vue, ça ne l'est pas !


    Pour ce qui est du code complet de ma vue, je ne peux le fournir pour des raisons de sécurité (base de données pro...) et aussi de longueur (180champs)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete paramétrée sur vue provoque erreur incompréhensible
    Par Arnaud B. dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 20/02/2011, 16h47
  2. Lenteur requetes sur tables, et surtout vues
    Par Samish dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/10/2010, 09h21
  3. Probleme de requete sur une vue
    Par MaInR0 dans le forum JDBC
    Réponses: 10
    Dernier message: 10/11/2008, 20h26
  4. Vue/Requete sur Access 2003 (Regen ou MAJ auto?)
    Par jamesleouf dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/05/2008, 15h33
  5. Grosse Requete ou Requete sur une vue ?
    Par TangoZoulou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 20/07/2007, 09h52

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