Éviter “#1060 - Dupliquer le nom de la colonne” Erreur, mais encore à l'aide de SELECT *
J'ai 2 tables, les annonceurs et les campagnes. Les deux ont plus de champs je garde de liste et les deux ont une clé primaire "id". Je voudrais créer une vue, sans avoir à saisir tous les champs manuellement à l'aide des * à la place. Je reçois le "double colonne" erreur. Est-il possible de le faire via * à tous ou est ma seule option pour entrer tous les noms de colonne et la définition des alias pour les Id?
CREATE VIEW VIEW_CAMPAIGNS AS
SELECT *,
advertisers.id as adv_id,
campaigns.id as camp_id
FROM campaigns, advertisers
WHERE advertisers.id = advertiser_id
Renvoie toujours #1060 - Double nom de colonne 'id'
Ne pas utiliser SELECT *
Êtes-vous en train de dire qu'il ne peut être fait avec SELECT * ?
Oui, en disant *, tu veux dire toutes les colonnes des deux tables, le fait que vous êtes aussi l'ajout de 2 colonnes plus explicitement et en leur donnant un nouvel alias ne change pas le fait que vous avez déjà sélectionné toutes les colonnes des deux tables.
Merci. Il n'existe aucun moyen pour exclure une colonne à partir de * ?
Oui. Mais je me suis aussi dit de ne pas utiliser * période. La meilleure pratique est de toujours de nom (et de l'identifier), toutes les colonnes.
Êtes-vous en train de dire qu'il ne peut être fait avec SELECT * ?
Oui, en disant *, tu veux dire toutes les colonnes des deux tables, le fait que vous êtes aussi l'ajout de 2 colonnes plus explicitement et en leur donnant un nouvel alias ne change pas le fait que vous avez déjà sélectionné toutes les colonnes des deux tables.
Merci. Il n'existe aucun moyen pour exclure une colonne à partir de * ?
Oui. Mais je me suis aussi dit de ne pas utiliser * période. La meilleure pratique est de toujours de nom (et de l'identifier), toutes les colonnes.
OriginalL'auteur Rid Iculous | 2014-02-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire dans MySQL (et d'autres bases de données) à l'aide de la
using
forme de lajoin
au lieu de laon
clause.Malheureusement, vous pouvez le faire ici parce que la jointure des touches de différents ids dans les deux tables. S'ils avaient le même nom, vous faites juste:
VUE DE CRÉER VIEW_CAMPAIGNS COMME
SELECT *,
À PARTIR de campagnes de rejoindre c
les annonceurs un
à l'aide de (advertisers_id);
Le plus proche que vous pouvez faire est de choisir le plus grand tableau, utilisez
*
pour cela et puis la liste de toutes les colonnes de la table.Ou, mieux encore, il suffit d'utiliser la
information_schame.columns
table pour générer les noms de colonne. Quelque chose comme:OriginalL'auteur Gordon Linoff
vous pouvez faire cela, pourquoi
puis son automatiquement les colonnes sont differentited .
*
. pour ne pas sélectionner toutes les colonnes (40) à chaque fois.EDIT:
Alias peut être utilisé pour les colonnes individuelles.
Vous devrez alias de chaque colonne au lieu
vérifier cette réponse
vérifier mes mises à jour abswer.
Je ne comprends pas cette réponse. Que faire de la (...) cela veut dire? Si j'ai besoin d'ajouter le domaine-noms/aliases il le toute l'entreprise est inutile. L'idée était d'utiliser *. Tout le monde dit en gros qu'il ne peut pas être fait. (?)
OriginalL'auteur echo_Me