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

 MySQL Discussion :

Erreur sur commande create view


Sujet :

MySQL

  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 487
    Par défaut Erreur sur commande create view
    Bonjour a tous,

    Je suis en train de suivre un cours et j'ai une erreur que je ne comprend pas:

    Si j'utilise ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM customer
    INNER JOIN payment
    ON payment.customer_id = customer.customer_id;
    Tout fonctionne correctement.

    Parcontre la ça bug:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE VIEW nom_vue AS(
    SELECT *
    FROM customer
    INNER JOIN payment
    ON payment.customer_id = customer.customer_id
    );
    L'erreur est la suivante:
    Error Code: 1060. Duplicate column name 'customer_id'

    S'il vous faut d'autre info dites le moi
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 130
    Par défaut
    Bonjour,

    Le message d'erreur me semble clair
    La requête retourne deux colonnes portant le même nom, ce qui n'est pas admis dans la déclaration d'une table (et par conséquent d'une vue, qui suit les mêmes règles de structure).
    Il faut remplacer l'étoile, qui ne devrait être utilisée qu'à des fins de débogage, par la liste des colonnes que doit retourner la vue.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 487
    Par défaut
    Merci pour ta réponse al1_24,

    Ok , mais Pourquoi quand je ne crée pas de vue ça fonctionne et j'ai deux colonnes identiques.
    Et que ça bug quand je crée une vue?
    Car création de vue est identique a créer une nouvelle table, et que quand on crée une table il ne peut y avoir deux colonnes identiques.
    Par contre pour une jointure sans création de vue ça passe.
    Ai je bien résumé la situation( même si c'est ce que tu m'avais marqué plus haut)?

  4. #4
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 944
    Par défaut
    Bonjour

    Les vues (dans Mysql, pour ce que je connnais) sont plus rigoureuses qu'une simple requête.
    Je n'en connais pas la raison, mais c'est ainsi : une requête écrite directement peut fonctionner alors que la même requête dans une vue provoque une erreur.

    Cela permet que la syntaxe d'une requête est correcte.
    Pierre

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 463
    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 463
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par zoumzoum59 Voir le message
    Merci pour ta réponse al1_24,

    Ok , mais Pourquoi quand je ne crée pas de vue ça fonctionne et j'ai deux colonnes identiques.
    Et que ça bug quand je crée une vue?
    Tout simplement à cause du SELECT *.
    La colonne de jointure customer_id est présente dans les deux tables, ce faisant, SELECT * n'est pas applicable
    Il faut donc remplacer * par la liste nominative des colonnes

    De toute façon, il ne faut JAMAIS utiliser SELECT * dans un traitement !
    SELECT * est instable (si la description de la table change, le résultat de la requête change), contre performant (on transporte des colonnes dont on n'a pas besoin, ce qui charge le réseau, et les index couvrants si existants ne sont pas utilisables), et nuit aux analyses d'impact.
    De nombreuses entreprises interdisent pour ces raisons l'utilisation de SELECT *.

Discussions similaires

  1. Champs auto_incremente sur un CREATE VIEW
    Par steven78700 dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/04/2012, 23h32
  2. Script sh erreur sur commande cp
    Par ibousan dans le forum Linux
    Réponses: 8
    Dernier message: 30/03/2011, 18h21
  3. XFree86 erreur sur commande startx
    Par titito dans le forum Unix
    Réponses: 1
    Dernier message: 03/07/2009, 12h15
  4. erreur sur un create table
    Par sliderman dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/07/2008, 17h36
  5. Erreur lors de CREATE VIEW: must specify column name..
    Par nek_kro_kvlt dans le forum SQL
    Réponses: 1
    Dernier message: 29/09/2006, 11h39

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