2010-08-24 10 views
3

J'ai deux tables: les membres et les renouvellementsRejoignez requête dans MySQL

Les deux tableaux ont un champ appelé memberid qui relie les deux tables de données ensemble. J'essaye de construire une requête qui extraira le prénom et le nom de famille de la table de membres pour les données qui sont maintenues dans la table de renouvellements. J'ai essayé d'utiliser la requête ci-dessous qui est basée sur quelques exemples que j'ai recherchés.

SELECT members.memberfirst, members.membersurname, members.memberid, renewals.account_name, renewals.memberid 
FROM members, renewals 
WHERE renewals.memberid=members.memberid 

L'erreur que je reçois en essayant de courir ce phpMyAdmin:

#1267 - Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' 

alt text

+1

Pouvons-nous jeter un oeil à vos définitions de table, S'il vous plaît? –

+0

J'ai modifié le post original avec la pièce jointe de capture d'écran de phpmyadmin – chocolatecoco

Répondre

2

Vous devez utiliser INNER JOIN. Jetez un oeil ici: http://www.postgresql.org/docs/8.1/interactive/queries-table-expressions.html
Même si c'est pour PostgreSQL, les requêtes sont les mêmes pour MySQL et les exemples sont vraiment bons.

SELECT members.memberfirst, members.membersurname, members.memberid, renewals.account_name 
FROM members 
INNER JOIN renewals 
ON members.memberid = renewals.memberid 

ou vous pouvez utiliser USING (memberid) au lieu de ON members.memberid = renewals.memberid

+0

Merci pour la suggestion. Cependant, je reçois toujours le même message d'erreur quand je l'exécute: # 1267 - Mélange illégal de classements (utf8_unicode_ci, IMPLICIT) et (utf8_general_ci, IMPLICIT) pour l'opération '=' J'ai mis à jour le post original avec une capture d'écran de phpmyadmin des deux tables. – chocolatecoco

0

Une légère modification si vous souhaitez afficher le nom du membre dans une seule colonne

SELECT CONCAT(members.memberfirst, " ", members.membersurname) as memberName, 
members.memberid, renewals.account_name, renewals.memberid 
FROM members 
INNER JOIN renewals 
WHERE renewals.memberid=members.memberid