我有一个问题,我无法弄清楚,并在这里看了谷歌和类似的问题,但他们只是不太一样。
我正在尝试构建一个MySQL查询,它有两个部分,第一部分很简单,我做得很好,因为它使用现有的关系,请参阅...
SELECT
clientsites.SiteName,
clients.ClientName,
pafaddresses.PostTown,
pafaddresses.PostCode,
CONCAT("XXXXXXX", Replace(UPPER(pafaddresses.PostCode),' ','')) AS JouneyKeytemp,
clientsites.SiteType
FROM clientsites
INNER JOIN clients ON clientsites.ClientFk = clients.ClientPk
INNER JOIN pafaddresses ON clients.ActualPAF = pafaddresses.id
您将从此代码中看到生成了一个别名,它会连接两个邮政编码,看起来像xxxxxxxyyyyyy,这确实有效,但出于显而易见的原因,我删除了实际的邮政编码。
我现在要做的是从一个名为Journeys的无关表中引入两个字段:
SELECT
JourneyKey,
SingleDistance,
SingleTime
FROM journeys
我想引入SingleDistance和SingleTime,其中Journey Key = JourneyKeyTemp的生成别名。
我尝试添加以下内容:
INNER JOIN journeys ON JouneyKeytemp = journeys.JourneyKey
但我只是不断收到语法错误。
任何帮助将不胜感激。
答案 0 :(得分:1)
在连接谓词中重复表达式:
INNER JOIN journeys
ON CONCAT("XXXXXXX", Replace(UPPER(pafaddresses.PostCode),' ','')) = journeys.JourneyKey
或者您可以创建子查询:
select * from(
SELECT
clientsites.SiteName,
clients.ClientName,
pafaddresses.PostTown,
pafaddresses.PostCode,
CONCAT("XXXXXXX", Replace(UPPER(pafaddresses.PostCode),' ','')) AS JouneyKeytemp,
clientsites.SiteType
FROM clientsites
INNER JOIN clients ON clientsites.ClientFk = clients.ClientPk
INNER JOIN pafaddresses ON clients.ActualPAF = pafaddresses.id)t
INNER JOIN journeys ON t.JouneyKeytemp = journeys.JourneyKey