Ah oui effectivement, j'avais lu trop vite.
Pour que UNION fonctionne il te faut le même nombre de colonnes.

L'astuce est de créer des colonnes "virtuelles" dans ton SELECT :
SELECT NULL AS id, NULL AS pseudo, mail FROM mails
Va t'afficher ta table mails avec des colonnes id et pseudo null (sachant que tu peux remplacer NULL dans ma requête en réalité par ce que tu veux)
Du coup, désormais ton UNION va fonctionner (un conseil en passant, il vaut mieux nommer explicitement ses colonnes dans le SELECT d'un UNION ça permet de s'assurer qu'elles soient dans le même ordre) :
SELECT id, pseudo, mail FROM membres UNION SELECT NULL AS id, NULL AS pseudo, mail FROM mails

Sauf que... tu veux les mails sans doublon, or UNION va supprimer les doublons mais uniquement les doublons qui ont le même id, le même pseudo et le même email, ce qui n'est pas ce que tu veux puisqu'on vient de remplir ta table mails avec des valeurs NULL pour l'id et le pseudo...

La 2ème astuce est de réimbriquer ta requête UNION dans une 3ème avec un simple GROUP BY mail :
SELECT * FROM (SELECT id, pseudo, mail FROM membres UNION SELECT NULL AS id, NULL AS pseudo, mail FROM mails) AS tmp GROUP BY mail

Et là ça devrait marcher comme tu veux !

Ah oui effectivement, j'avais lu trop vite.
Pour que UNION fonctionne il te faut le même nombre de colonnes.
:idea: L'astuce est de créer des colonnes "virtuelles" dans ton SELECT :
[sql]SELECT NULL AS id, NULL AS pseudo, mail FROM mails[/sql]
Va t'afficher ta table mails avec des colonnes id et pseudo null (sachant que tu peux remplacer NULL dans ma requête en réalité par ce que tu veux)
Du coup, désormais ton UNION va fonctionner (un conseil en passant, il vaut mieux nommer explicitement ses colonnes dans le SELECT d'un UNION ça permet de s'assurer qu'elles soient dans le même ordre) :
[sql]SELECT id, pseudo, mail FROM membres UNION SELECT NULL AS id, NULL AS pseudo, mail FROM mails[/sql]
:!: Sauf que... tu veux les mails sans doublon, or UNION va supprimer les doublons mais uniquement les doublons qui ont le même id, le même pseudo et le même email, ce qui n'est pas ce que tu veux puisqu'on vient de remplir ta table mails avec des valeurs NULL pour l'id et le pseudo...
:idea: La 2ème astuce est de réimbriquer ta requête UNION dans une 3ème avec un simple GROUP BY mail :
[sql]SELECT * FROM (SELECT id, pseudo, mail FROM membres UNION SELECT NULL AS id, NULL AS pseudo, mail FROM mails) AS tmp GROUP BY mail[/sql]
:arrow: Et là ça devrait marcher comme tu veux ! :D