Mysql 从2个不同的数据库加入时出现未知列错误
构建查询时遇到问题,在on子句中的未知列j.id上出现错误 这是我目前的疑问Mysql 从2个不同的数据库加入时出现未知列错误,mysql,sql,Mysql,Sql,构建查询时遇到问题,在on子句中的未知列j.id上出现错误 这是我目前的疑问 SELECT j.id, j.title, venues.name as venueName, ja.completed FROM dbsivcmsnew.jobs AS j, venues LEFT JOIN dbsiv.job_applications AS ja ON ja.jobId = j.id WHERE j.venueId = venues.i
SELECT
j.id,
j.title,
venues.name as venueName,
ja.completed
FROM
dbsivcmsnew.jobs AS j,
venues
LEFT JOIN dbsiv.job_applications AS ja ON ja.jobId = j.id
WHERE
j.venueId = venues.id
AND j.closingDate > UNIX_TIMESTAMP()
AND j.active = 1
ORDER BY
j.closingDate DESC
从我所看到的语法是正确的
然而,连接可能是不必要的,我的查询需要返回的是
SELECT
j.id,
j.title,
venues.name as venueName,
ja.completed
FROM
jobs AS j,
venues,
dbsiv.job_applications AS ja
WHERE
j.venueId = venues.id
AND j.closingDate > UNIX_TIMESTAMP()
AND j.active = 1
AND ja.pin = $CurrentUsersId //This needs to optional though, if no match ja.completed should be 0
ORDER BY
j.closingDate DESC
有没有可能在不使用联接的情况下使WHERE语句成为可选的?好吧,您正在混合“表联接”的语法,这是。。。这不是个好主意 只需在左连接中添加附加子句就可以了
SELECT
j.id,
j.title,
v.name as venueName,
ja.completed
FROM
jobs j
inner join venues v on v.id = j.venueID
left join dbsiv.job_applications ja on ja.jobId = j.id and ja.pin = $CurrentUsersId
WHERE
AND j.closingDate > UNIX_TIMESTAMP()
AND j.active = 1
ORDER BY
j.closingDate DESC
将您的选择更改为:
SELECT
j.id,
j.title,
venues.name as venueName,
ja.completed
FROM
dbsivcmsnew.jobs AS j join j.venueId = venues.id
venues on
LEFT JOIN dbsiv.job_applications AS ja ON ja.jobId = j.id
WHERE
j.closingDate > UNIX_TIMESTAMP()
AND j.active = 1
ORDER BY
j.closingDate DESC
如果使用join,则对from语句中的所有表使用它。列j.id在join条件下不可访问,因为指定内部联接的顺序不同。我已重新安排了顺序,如下所示:
SELECT
j.id,
j.title,
venues.name as venueName,
ja.completed
FROM
VENUES
INNER JOIN dbsivcmsnew.jobs AS j ON j.venueId = venues.id
LEFT JOIN dbsiv.job_applications AS ja ON ja.jobId = j.id
WHERE j.closingDate > UNIX_TIMESTAMP()
AND j.active = 1
ORDER BY J.CLOSINGDATE DESC;
即使您没有显式地使用JOIN关键字,事实上,您在查询中使用(内部)连接。谢谢:),我甚至从来没有想到过那句话。(我会接受的,如果你允许的话)