2010-08-24 53 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