mysqli子查询未知列

标签 mysql subquery

这几乎看起来像是一个范围问题 - 子查询中的 select 语句无法识别表“candidate”:

SELECT 
        candidate.id AS id, 
        candidate.image AS image, 
        candidate.name AS name, 
        candidate.party AS party, 
        player.order AS player_order,
        c_pcts.pct AS pct
FROM  `candidate` 
INNER JOIN players player ON player.candidate_id = candidate.id 
INNER JOIN lineups lineup ON player.lineup_id = lineup.id 
INNER JOIN (
    SELECT 
        pct
    FROM candidate_pcts p
    INNER JOIN weekly_game game ON p.weekly_game_id = (
        SELECT id FROM weekly_game ORDER BY date DESC LIMIT 1
    ) WHERE p.candidate_id = candidate.id 
    ) c_pcts
WHERE lineup.id = '31' 
ORDER BY player.order ASC

给出错误:“‘where 子句’中存在未知列‘candidate.id’。”如果我输入的是“FROM Candidate_pcts p”

FROM candidate_pcts p, candidate c

然后它就看不到“p.weekly_game_id”...嗯?

似乎我需要以某种方式识别子查询的“候选”表,但我尝试的一切只会让我进一步误入歧途。我尝试了很多乱七八糟的事情:表格的顺序,在我能想到的任何地方明确标识它们,反引号。我应该注意到,嵌套子查询的工作方式就像一个魅力。又来了:

SELECT 
        pct
    FROM `candidate_pcts` 
    INNER JOIN weekly_game game ON candidate_pcts.weekly_game_id = (
        SELECT id FROM weekly_game ORDER BY date DESC LIMIT 1
    ) WHERE candidate_pcts.candidate_id = '5'

当然,那里有一个硬编码的 id 值。如果需要的话我可以在这里提供数据库结构,但这已经很长了。 “weekly_game”表只是每个候选人每周的一组分数,我们只需要最近一周的分数,因此有“ORDER BY date DESC LIMIT 1”子句。

非常感谢您抽出时间。

<小时/>

表格:

  • 候选人:

    {id图像名称政党}

  • candidate_pcts:

    {idcandidate_idpctweekly_game_id}

  • 阵容:

    {id日期,user_id}

  • 表格球员:

    {id,candidate_id,lineup_id,order}

  • 表格weekly_game:

    {id,日期}

最佳答案

您基本上在解决问题上处于正确的轨道上。本质上,嵌套子选择不知道 candidate.id。如果您分解查询并只查看相关的子选择:

SELECT 
    pct
FROM candidate_pcts p
INNER JOIN weekly_game game ON p.weekly_game_id = (
    SELECT id FROM weekly_game ORDER BY date DESC LIMIT 1
) WHERE p.candidate_id = candidate.id 

您可以看到,除了 where 子句之外,该查询中没有对 candidate 表的任何引用,因此这是一个未知列。

由于子选择本质上是在引用它的外部选择之前进行的,因此子选择必须是独立的可执行查询。

关于mysqli子查询未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082226/

相关文章:

mysql - 执行更新数据库时 MVC5 中的 RenameIndexOperation 错误

mysql - 仅检索关节具有依赖性的行

Mysql 选择不同但计算重复条目总数

php - SQL PHP 查询更新不起作用

mysql - 在 SQL 中添加列和修剪数据

mysql - 跨具有不同列名的表的 SQL 子查询

mysql - 列出所有项目的项目编号、项目名称和员 worker 数 > 2 名员工参与其中

sql - SQL Server 中的表别名和使用 Exists

mysql - 在构建路径中找不到带有 mysql 连接器的 com.mysql.jdbc.Driver

javascript - 多个 Jquery 倒计时显示 NaN