2015-06-14 33 views
0

我有一個問題,我無法弄清楚,並在這裏查看了谷歌和類似的問題,但他們只是不完全相同。使用別名形成內部聯接

我試圖建立一個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,這確實有效,但顯而易見的原因是我刪除了實際的郵政編碼。

我現在該怎麼做是在兩個領域帶來從一個不相關的表稱爲旅程:

SELECT 
    JourneyKey, 
    SingleDistance, 
    SingleTime 
FROM journeys 

我想在SingleDistance和SingleTime,把其中的關鍵之旅產生=的JourneyKeyTemp別名。

我已經嘗試添加以下內容:

INNER JOIN journeys ON JouneyKeytemp = journeys.JourneyKey 

但我只是不斷得到一個語法錯誤。

任何幫助,將不勝感激。

回答

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 
+0

我發誓,我試過,之前並沒有工作,沒有現在這麼感謝。順便說一句,我如何讓它做一個正確的內部聯接,因爲沒有總是在旅程表上的條目,所以要顯示所有客戶端,只有從旅程匹配 –

+0

左加入旅程 –