11
votes

MySQL: Supprimer des colonnes en double sur une jointure gauche, 3 tables

J'ai une table qui utilise 3 clés étrangères dans d'autres tables. Lorsque j'effectue une jointure gauche, je reçois des colonnes en double. MySQL dit que le en utilisant la syntaxe réduira les colonnes en double, mais il n'y a pas d'exemples pour plusieurs clés.

donné: xxx

mon instruction de requête: xxx

mon objectif est d'obtenir une ligne de toutes les colonnes de la jointure sans colonnes en double. J'utilise le connecteur MySQL C ++ pour envoyer les instructions SQL et récupérer des ensembles de résultats. Je crois que le connecteur C ++ a des problèmes avec des noms de colonne en double.

Quelle est la syntaxe de l'état SQL que je devrais utiliser?

Référence à MySQL Join Syntax < / p>


0 commentaires

4 Réponses :


2
votes

Vous sélectionnez * à partir de la table assurée combinée. Limite que * à toutes les colonnes que vous voulez garder.


1 commentaires

Lorsque vous regardez dans les données de poste de MySQL, j'ai beaucoup de colonnes. Cela peut être une douleur si je dois énumérer toutes les colonnes sauf les duplicats. Existe-t-il un qualificatif SQL qui me laissera répertorier toutes les colonnes, à l'exception de ceux que je spécifie?



4
votes

Comme il ressemble à la plupart des tables, vous vous joignez à quelques colonnes, à l'exception du premier, que diriez-vous:

SELECT (* - foo) FROM table


1 commentaires

Bien que l'énumération de chaque colonne valide soit possible, je pense que c'est beaucoup de travail pour mon programme et ajoute également à la longueur de l'instruction SQL qui est envoyée à la base de données. Voir la réponse de Danny ci-dessous.



13
votes

Je crois que ce qui suit devrait fonctionner: xxx


1 commentaires

Cela fonctionne, sauf lorsque la table n'existe pas. Donc, j'ai mis des chèques pour cela. En outre, cela suppose que les tables ont des noms de colonnes uniques, à l'exception des champs de clé étrangère. Heureusement, c'est ce que j'ai. Merci beaucoup!



1
votes

Essayez la requête suivante:

SELECT  name,ac,relation_name
FROM  table1
LEFT JOIN table2 USING (ID_Prep_Text)
LEFT JOIN table3 USING (ID_Picture);


0 commentaires