gpt4 book ai didi

mysql - 无法使用多个子查询解决查询中的父字段

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:03 26 4
gpt4 key购买 nike

编辑:更好的解释我有一个工作页面。作为一个想法的工作和三个技能 (skill_ids) 和技能要求(用户必须至少具有此技能值才能合格)。我点击工作寻找候选人,所以我有 job_id 和三个 skill_ids 和 skill_id_requirements。因此,就连接提出的第一个答案而言,我可以做到这一点。我找到所有拥有这三种技能的用户。技能保存在 skill_ratings 中。到目前为止,它只用于查找 skill_id。但现在我想要这个值,这里有我的代码,我可以在其中计算最终值(称为评级)。评级尊重所有给定的值,但不是简单的平均值或所有值的总和。这就是为什么我需要冗长的可怕代码。在冗长的可怕代码中,我通常会插入一个用户 ID。但是这里我需要所有具有上述技能的user_id来计算他们是否合格。这是动态的。

我有一张表,我想在其中找到符合某些要求的职位的人员。在这里,我使用一个名为 skill_ratings 的表,但(据我所知)需要添加一些子查询。在这里我遇到了问题。有很多子查询,我试图解决父查询字段。但它似乎只适用于父查询的一级子查询。这是我的结构:

    SELECT * FROM table t 
WHERE EXISTS (SELECT * FROM table d WHERE x > 1
AND b=t.id
AND y <= (SELECT a FROM (MAIN SUBQUERY WITH CALCULATIONS)))
GROUP BY xyx

但我得到的错误是:#1054 - “where 子句”中的未知列“skra.usr_id_get”。在这种情况下,skra 是父表。

我想获取如下(伪sql):

SELECT all FROM table t AS x 
WHERE EXISTS (
SELECT all FROM table t AS y
WHERE y.skill_id = 1
AND y.usr_id_get = t.usr_id_get
AND y.value <= (my algorithm)
)

就我想获得一个计算数字而言,主子查询很重要。代码在其他地方有效,因为我能够使用预定义的 PHP 变量来获取用户 ID。但我不能在这里这样做,因为我需要在 where 子句的边界内找到用户。

我该如何解决这个问题?因为在子查询中寻址父字段似乎仅限于一级子查询。

编辑:代码

    Code removed due to project status.

错误:#1054 - “where 子句”中的未知列“c.usr_id_get”

最佳答案

我们希望用户具备特定水平的特定技能。例如,所有技能 1 至少达到 20 级,技能 2 至少达到 70 级的用户。

这是一个算法:

  1. 首先,我们必须获得技能水平。一个用户有多个技能等级,每个技能的平均等级就是等级。
  2. 然后我们需要一个标准表(在我们的示例中为技能 1/级别 20,技能 2/级别 70)。
  3. 我们收集所有符合标准(EXISTS 子句)的用户技能水平,然后
  4. 保留符合所有技能水平的用户 (count(*) = <desired number of skills>)。

查询:

select
sr.usr_id_get
from
(
select usr_id_get, skill_id, avg(value) as level
from skill_ratings
group by usr_id_get, skill_id
) sr
where exists
(
select *
from
(
select 1 as skill_id, 20 as level
union all
select 2 as skill_id, 70 as level
) criteria
where sr.skill_id = criteria.skill_id
and sr.level >= criteria.level
)
group by usr_id_get
having count(*) = 2;

您还可以将条件设​​为真实(临时)表。那么无论请求多少技能,您的查询都将保持不变。你会有

where exists
(
select *
from criteria
where sr.skill_id = criteria.skill_id
and sr.level >= criteria.level
)
group by usr_id_get
having count(*) = (select count(*) from criteria);

那么。

关于mysql - 无法使用多个子查询解决查询中的父字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47411462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com