'中的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