我有三个表,一个用于用户,另一个用于主题,第三个表包含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_users
。id
匹配,但是直到稍后在查询中才联接该表。如果您重新排序联接,它将更好地工作。同样,根据您的表描述,您似乎还需要在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/