Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
'中的MySQL未知列;关于第'条;_Mysql_Sql_Mysql Error 1054 - Fatal编程技术网

'中的MySQL未知列;关于第'条;

'中的MySQL未知列;关于第'条;,mysql,sql,mysql-error-1054,Mysql,Sql,Mysql Error 1054,我的问题看起来像 SELECT t2.id, t3.id, t3.sys_modified_date, t3.sys_created_date, t3.email, t3.enabled, t3.password, t3.passwordagain, t4.id, t4.sys_modified_date, t4.sys_created_date, t4.job, t4.name, t4.surname, t3.retrivalHash, t3.username

我的问题看起来像

SELECT t2.id, t3.id, t3.sys_modified_date, t3.sys_created_date, 
    t3.email, t3.enabled, t3.password, t3.passwordagain, t4.id, 
    t4.sys_modified_date, t4.sys_created_date, t4.job, t4.name, 
    t4.surname, t3.retrivalHash, t3.username 
FROM Customer_Contractor t0 INNER JOIN Contractor t1 ON t0.contractor = 
    t1.id INNER JOIN User t3 ON t2.id = t3.partyId LEFT OUTER JOIN 
    Profile t4 ON t3.profileId = t4.id, Party t2 
WHERE t0.customer = ? 
ORDER BY t2.id ASC 
我得到一个错误:

“on子句”中的未知列“t2.id”


我不知道怎么了,请帮我解决这个问题。

正确。首次使用别名时,没有别名为
t2
的表

你在这么做吗

Customer_Contractor t0
INNER JOIN
Contractor t1 ON t0.contractor = t1.id
INNER JOIN
User t3 ON t2.id = t3.partyId
LEFT OUTER JOIN 
Profile t4 ON t3.profileId = t4.id
CROSS JOIN
Party t2 
当我怀疑你想要这个(真的?交叉连接?)


在您的查询中,
参与方t2
与其他ANSI-92联接表不在同一范围内-这就是t2.id=t3.partyId上的
内部联接用户t3失败的原因

我猜你想要的是:

SELECT t2.id, t3.id, t3.sys_modified_date, t3.sys_created_date, 
    t3.email, t3.enabled, t3.password, t3.passwordagain, t4.id, 
    t4.sys_modified_date, t4.sys_created_date, t4.job, t4.name, 
    t4.surname, t3.retrivalHash, t3.username 
FROM Customer_Contractor t0 
INNER JOIN Contractor t1 ON t0.contractor = t1.id 
INNER JOIN Party t2 ON t1.id = t2.id
INNER JOIN User t3 ON t2.id = t3.partyId 
LEFT OUTER JOIN Profile t4 ON t3.profileId = t4.id
WHERE t0.customer = ? 
ORDER BY t2.id ASC 

您需要显式地连接到Party表(别名为t2)。没有这个连接,on条件就没有意义


如果不知道表的结构,就很难知道如何显式加入到参与方中。

ON
子句只能“看到”在同一个表引用组中,换句话说,在同一个联接组中,在该
ON
子句左侧定义的表别名

t2
别名既不在引用它的特定
ON
子句的左侧,也不在同一个表引用组中。(不同的组用逗号分隔。)

WHERE
子句是唯一可以引用所有表引用组中定义的所有别名的地方。但如果我是你,我会用一个合适的显式连接替换逗号连接

参考:


    • 第t2方
      不在条款的范围内。您需要将其从重构为
      SELECT t2.id, t3.id, t3.sys_modified_date, t3.sys_created_date, 
          t3.email, t3.enabled, t3.password, t3.passwordagain, t4.id, 
          t4.sys_modified_date, t4.sys_created_date, t4.job, t4.name, 
          t4.surname, t3.retrivalHash, t3.username 
      FROM Customer_Contractor t0 
      INNER JOIN Contractor t1 ON t0.contractor = t1.id 
      INNER JOIN Party t2 ON t1.id = t2.id
      INNER JOIN User t3 ON t2.id = t3.partyId 
      LEFT OUTER JOIN Profile t4 ON t3.profileId = t4.id
      WHERE t0.customer = ? 
      ORDER BY t2.id ASC