2013-01-18 63 views
2

这是我的SQL语句,我无法运行未知列错误:MySQL允许在where子句

SELECT fm . * , mp.first_name, mp.last_name, mp.image, mp.member_id 
FROM featured_members AS fm 
JOIN member_profiles AS mp WHERE fm.member_id = mp.member_id 
AND fm.member_type_id =6 
AND fm.site_id =1 

当我运行它,它给了我#1054 - Unknown column 'fm.site_id' in 'on clause'错误

是否有语法问题,因为FM表确实有那个site_id列,但我不知道为什么SQL不提取它?

我对featured_members表结构是这样的:

1 sr_no  
2 member_id  
3 member_type_id 
4 site_id 

member_profiles结构:

1 member_profile_id 
2 member_id  
3 first_name  
4 middle_name 
5 last_name  
6 gender 
7 image 
+2

做什么你的桌子看起来像? – DonSeba

+2

fm.site_id你有在featured_members表中的site_id列吗?检查它... – xurca

+0

我更新了它与表结构 – Seeker

回答

2

你就错了: 随着JOIN的它是强制性使用ON子句,除非另外它是一个交叉连接。

SELECT fm . * , mp.first_name, mp.last_name, mp.image, mp.member_id 
FROM featured_members AS fm 
JOIN member_profiles AS mp ON (fm.member_id = mp.member_id) 
WHERE fm.member_type_id =6 
AND fm.site_id =1 
+1

为什么这会解决'fm.site_id'的不存在? – eggyal

+0

所以与我们分享表列 – DonSeba

+1

我做了@DonSeba请现在检查 – Seeker

1

测试:

SELECT fm.*, mp.first_name, mp.last_name, mp.image, mp.member_id 
FROM featured_members AS fm 
LEFT JOIN member_profiles AS mp ON fm.member_id = mp.member_id 
WHERE fm.member_type_id =6 AND fm.site_id =1 
+1

为什么这会解决'fm.site_id'的不存在? – eggyal

+1

仍然不能正常工作 – Seeker

1

尝试......

SELECT fm . * , mp.first_name, mp.last_name, mp.image, mp.member_id 
FROM featured_members AS fm, member_profiles AS mp 
WHERE fm.member_id = mp.member_id 
AND fm.member_type_id =6 
AND fm.site_id =1 

在你的语句中的JOIN子句期待相应的其上是什么原因造成的错误

+0

感谢您的帮助:) – Seeker

0

试试这个: -

SELECT fm . * , mp.first_name, mp.last_name, mp.image, mp.member_id <br> 
FROM featured_members fm , member_profiles mp <br> 
where fm.member_id = mp.member_id <br> 
AND fm.member_type_id =6 <br> 
AND fm.site_id =1