J'explique mon problème, j'ai 4 tables utilisateurs :

Utilisateur_professionnel(#id_pro, nom_pro, mail_pro, payé_pro, cat_pro...)
Utilisateur_amateur(#id_amateur, nom_amateur, mail_amateur, cat_amateur, payé_amateur...)
Utilisateur_asso(#id_asso, nom_asso, mail_asso, payé_asso, cat_asso...)


Par la suite pour certains besoins, il a fallu faire une table pour tous les utilisateurs, on a donc une table utilisateur qui a son id propre et l'id de la table utilisateur d'ou il provient, et pour differencier les identifiants étranger on a un champs avec le nom de la table d'ou il provient (dans le champ "table_utilisateur" on aura "utilisateur_professionnel" ou utilisateur_amateur" ou "utilisateur_asso")

utilisateurs(#id_utilisateur, id_foreigner, table_utilisateur, mail_utilisateur, bonus)

Donc voila, la base n'est pas forcement réalisée dans les regle de l'art, mais j'herite de cette base en production, elle n'est pas modifiable.
Ce que je souhaite extraire dans une requete c'est : la liste de tous les utilisateurs qui font partie de la catégorie "test", classés selon qu'ils aient payé (champs payé a oui ou non) et selon leur bonus (dans la table utilisateur).

Le probleme que j'ai c'est que je n'arrive pas a faire la jointure entre la table utilisateurs et les autre tables car le champs id_foreigner n'est pas vraiment unique. Comme il existe un champs unique qui est l'adresse mail, voila ce que j'avais fait :

SELECT nom_pro AS nom, bonus AS bonus, payé_pro AS paye FROM utilisateur_pro, utilisateurs WHERE cat_pro = "test"
AND mail_pro = mail_utilisateur
union
SELECT nom_amateur, bonus, paye_amateur FROM utilisateur_amateur, utilisateurs WHERE cat_amateur = "test"
AND mail_amateur = mail_utilisateur
union
SELECT nom_asso, bonus, paye_asso FROM utilisateur_asso, utilisateurs WHERE cat_asso = "test"
AND mail_asso = mail_utilisateur
GROUP BY paye_u
ORDER BY nom, bonus

Une erreur 1054 m'est retournée, alors je voulais savoir si il y avait des erreurs dans cette requete et si il n'y avait pas d'autre méthode pour la realiser.

Cordialement.