Phpmyadmin : "La sélection courante ne contient pas de colonne unique" ?

noren

WRInaute accro
Bonjour

J'aurais voulu savoir si c'était normal d'avoir ce genre d'avertissement pour certains select dans PHPmyadmin j'ai le message suivant au dessus du résultat :

"La sélection courante ne contient pas de colonne unique. Les grilles d'édition, les cases à cocher ainsi que les liens Edition, Copie et Supprimer ne sont pas disponibles."

J'ai ce message pour des requetes aussi basiques que celle-ci :

Code:
select * from t_taxon_article where id_taxon=1

Pour faire simple je veux récupérer tous les articles pour le taxon 1

ma table contient les champs suivants :

Code:
id_taxon
id_article

primary (id_taxon, id_article)
index (id_article)

Est-ce normal d'avoir ce genre de message? je ne comprend vraiment pas comment je peux éviter ca et si ça a des conséquences sur les performances..
 

Louis63

WRInaute discret
tu as ce message quand la table n'a pas une clé primaire sur un seul champ.
pas de conséquence à mon avis sur les perfs si l'idéal est bien de mettre un index sur id_article
 

noren

WRInaute accro
J'ai le même soucis avec des requêtes sur de stables avec une clé primaire sur un seul champ.
Et c’est d'autant plus fréquent dès qu'il y a la moindre jointure.

Je n'avais jamais fait gaffe à ça, mais je vois pas comment faire autrement mes requêtes (tous très basiques) pour éviter cette alerte.

je met bien une clé primaire sur toutes mes tables avec un seul champ ou 2 champs
 

noren

WRInaute accro
Autre exemple :

Code:
SELECT m.id_membre, m.login, r.role, m.id_role FROM membres AS m INNER JOIN roles as r on (r.id_role=m.id_role) WHERE m.id_membre = 1

la table membres

Code:
id_membre
email
etc.

primary (id_membre)

la table roles

Code:
id_role
role

primary (id_role)

dans ce cas de figure j'ai quand même droit à cette alerte :

La sélection courante ne contient pas de colonne unique. Les grilles d'édition, les cases à cocher ainsi que les liens Edition, Copie et Supprimer ne sont pas disponibles.

Je ne vois pas ce qui peut clocher ici, j'ai bien une clé primaire à chaque table, la jointure est bonne est le explain est parfait également

En image ça ressemble à ça

 

Nico998

Nouveau WRInaute
Voici ce que j'avais constaté : Ce message apparait lorsque la requête contient une jointure, il y a donc les données qui proviennent de 2 tables différentes sur la même ligne de résultat.

Ce message signale simplement que la modification directe à partir des résultats de la recherche ne fonctionnera pas car il n'y a pas de colonne unique qui permet d'identifier l'enregistrement à mettre à jour.

Ce n'est pas un problème de performance ou de construction de requête mais juste une indication pour ne pas se demander pourquoi quelquefois il est possible de modifier directement les données de la table à partir des résultats d'une requête, et quelquefois c'est impossible.
 

Discussions similaires

Haut