2010-08-24 87 views
3

我有两个表:成员和续订在MySQL中加入查询

这两个表有一个叫做memberid的字段,它将两个数据表链接在一起。我试图构造一个查询,它将从成员表中提取正在续订表中保存的数据的名和姓。我曾尝试使用下面的查询,这是基于我查过的一些例子。

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

错误试图在phpMyAdmin运行这个时,我得到:

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

alt text

+1

我们可以看看你的表定义,以显示成员的名字,请? – 2010-08-24 16:56:39

+0

我编辑了从phpmyadmin截图附件的原始帖子 – chocolatecoco 2010-08-25 11:26:08

回答

2

您应该使用INNER JOIN。看看这里:http://www.postgresql.org/docs/8.1/interactive/queries-table-expressions.html
即使是PostgreSQL,MySQL的查询也是一样的,并且这些示例非常好。

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

,或者您可以使用USING (memberid)代替ON members.memberid = renewals.memberid

+0

感谢您的建议。然而,当我运行它时,我仍然收到相同的错误信息:#1267 - 非法混合排序规则(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)进行操作'='我已经使用屏幕截图更新了原始文章两个表的phpmyadmin。 – chocolatecoco 2010-08-25 11:30:35

0

一个稍微的改变,如果你想在一列

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