'on子句'中的未知列'wp_cons_users.id'

时间:2013-06-27 14:31:17

标签: mysql

我有三个表一个用于用户,另一个用于主题,第三个表包含user_id,subject_id外键。

当我运行以下sql时,我得知unou coloumn。

SELECT wp_cons_users.first_name, wp_cons_subject.subject, wp_cons_skilllist.skill_level
FROM  `wp_cons_subject` 
JOIN wp_cons_skilllist ON wp_cons_skilllist.user_id = wp_cons_users.id
JOIN wp_cons_users ON wp_cons_users.id = wp_cons_skilllist.user_id
WHERE wp_cons_subject.id =  '1'
ORDER BY  `wp_cons_skilllist`.`skill_level` DESC

我无法通过此查询找到错误。

wp_cons_skilllist

列链接

id(primay)
user_id wp_cons_users - > ID

subj_id wp_cons_subject - > ID skill_level


在这里,我尝试获取任何给定主题ID的用户名,技能水平和主题。

3 个答案:

答案 0 :(得分:0)

看起来你的主要问题在于JOIN的排序。在您的第一次加入中,您与wp_cons_usersid匹配,但在查询的后期才会加入该表。如果您重新订购连接,它应该更好。此外,根据您的表格说明,您似乎还需要加入subject_id。此查询应该有所帮助:

SELECT wp_cons_users.first_name
, wp_cons_subject.subject
, wp_cons_skilllist.skill_level
FROM  wp_cons_users 
JOIN `wp_cons_subject`
ON wp_cons_users.id=`wp_cons_subject`.user_id
AND wp_cons_subject.id =  '1'
JOIN
wp_cons_skilllist 
ON wp_cons_skilllist.user_id = wp_cons_users.id
AND  wp_cons_skilllist.subject_id = `wp_cons_subject`.id
ORDER BY  `wp_cons_skilllist`.`skill_level` DESC

我猜测原始查询中没有的字段名称,因此如果它们与我假设的不同,您可能需要进行一些更改。

答案 1 :(得分:0)

如果没有关于表中属性的信息,我担心我们只能假设你的wp_cons_users表中没有ID列。

答案 2 :(得分:0)

当我将查询更正为跟随它开始工作时。

SELECT wp_cons_users.first_name, wp_cons_subject.subject, wp_cons_skilllist.skill_level
FROM  `wp_cons_skilllist` 
JOIN wp_cons_subject ON wp_cons_subject.id = wp_cons_skilllist.subject_id
JOIN wp_cons_users ON wp_cons_users.id = wp_cons_skilllist.user_id
WHERE wp_cons_skilllist.subject_id =  '1'
ORDER BY  `wp_cons_skilllist`.`skill_level` DESC 
LIMIT 0 , 30