0

我有三个表,一个用于用户,另一个用于主题,第三个包含 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 Skill_level


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

4

3 回答 3

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
于 2013-06-27T15:10:18.973 回答
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

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

于 2013-06-27T14:54:26.400 回答
0

如果没有有关您表中属性的信息,恐怕我们只能假设您的 wp_cons_users 表中没有 ID 列。

于 2013-06-27T14:54:42.053 回答