2016-05-12 156 views
0

我發佈這個問題,因爲我確實設法找到a similar question,但他們沒有使用別名。Mysql從一個表中選擇所有,並從另一個表中選擇一些使用別名

我有兩張桌子 - 我想抓住table1的一切,只需從table2處抓住user_nameTeam

我原來的查詢被抓從table2

SELECT * 
FROM qabin.allqas t1 
JOIN login.users t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

一切的一切都很好,並能正常工作,但我想只得到user_nameTeam

爲了讓事情更有趣,他們在不同的數據庫中,但它不是一個問題。

一個在qabin數據庫中,另一個在login數據庫中。

我曾嘗試:

SELECT 
    qabin.allqas.* AS t1, 
    login.users.Team, 
    login.users.user_name 
JOIN login.users t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

我需要的T1和T2的別名,因爲他們正在爲建設一個更大的查詢字符串別處使用。

在此先感謝!

+0

既然你指出出於另一個問題它是有用的知道你可以按照這個答案,只替換表名別名 – dan08

+0

我試圖避免這一點,因爲有很多,使用這些別名的代碼行。 – user1274820

回答

1

爲什麼不使用子查詢?

SELECT * 
FROM qabin.allqas t1 
JOIN (SELECT user_name, Team FROM login.users) t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 
+0

真棒,非常快的答案,它的作品:)另外,TIL什麼子查詢。 – user1274820

+0

這是一種迂迴的方式來完成更簡單的事情。 – dan08

+1

他說他以後在一個大型查詢中使用這個別名。如果由於某種原因,他希望只有這兩個字段可用於此別名,這就是你如何做到的。 – rgvassar

1

您不能使用一個別名(t1)作爲一組列。我猜你正在尋找的是這樣的:。

SELECT t1.*, t2.team, t2.user_name 
FROM qabin.allqas t1 
JOIN login.users t2 
    ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

我會建議使用從T1代替T1的字段名*

+0

我基於發送的一堆參數構建一個字符串,因此讓我解釋它的用途。基本上,後來出現的另一個字符串是:'$ queryString。=「AND t1.DateCompleted BETWEEN'$ startDate'AND'$ endDate'」;'我希望避免不得不重寫一堆以後的代碼 – user1274820

+0

我比較新但是請放心,我正在逃避所有的帖子數據 – user1274820

1

嘗試此查詢:

SELECT t1.*, t2.user_name, t2.Team 
FROM qabin.allqas t1 
JOIN login.users t2 
ON t1.Submitter 1= t2.user_name 
WHERE t1.Status='Complete' 
相關問題