我有三个表一个用于用户,另一个用于主题,第三个表包含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的用户名,技能水平和主题。
答案 0 :(得分:0)
看起来你的主要问题在于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
我猜测原始查询中没有的字段名称,因此如果它们与我假设的不同,您可能需要进行一些更改。
答案 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