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

当我运行以下sql时,我会变得不知所措。

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
技能等级



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

最佳答案

看来您的主要问题在于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


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

关于mysql - “on子句”中的未知列“wp_cons_users.id”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17345962/

10-13 02:03