2015-03-31 106 views
0

我有我用在MS Access工作一個相當大的SQL語句2010年。這裏有雲:來自同一個查詢中查詢使用結果

SELECT 
W.ID AS wid, 
W.wpt_ty AS ty, 
W.wpt_num AS num, 
W.wpt_nxt AS nxt, 
W.latdeg AS lat, 
W.londeg AS lon, 
W.alt AS alt, 
W.mission_id AS mid, 
W.ctg1 AS ctg1, 
W.ctg2 AS ctg2, 
W.ctg3 AS ctg3, 
W.ctg4 AS ctg4, 
W.wpt_index AS indx, 
W.vel AS vel, 
W.tu AS tu, 
R.route_num AS rnum, 
R.AC_num AS ac, 
R.route_type AS rtype, 
R.LastUpdatedOn AS d8, 
R.LastUpdatedBy AS auth, 
R.flight_wpt_count AS wfcount, 
M.mission_name AS msnName, 
V.Description AS vstatus, 
R.disallowed_reason_id AS did, 
CW.wpt_num AS c1num, 
CR.matching_route_id AS c1mrid, 
CW.wpt_index AS c1indx, 
CRU.runway_name AS c1rnwy, 
CR.route_num AS c1rnum 
FROM Validation AS V 
(RIGHT JOIN Runways AS CRU 
INNER JOIN (Routes CR 
INNER JOIN Waypoints CW ON CR.ID = CW.route_id) 
ON Runways.ID = Routes.runway_id 
INNER JOIN ((Missions as M 
INNER JOIN Routes AS R ON M.ID = R.mission_id) 
INNER JOIN Waypoints AS W ON (R.ID = W.route_id) 
AND (M.ID = W.mission_id)) ON 
V.ID = R.validated 
WHERE (((R.matching_route_id)=307543) AND ((R.validated) <> 0)) 
AND (((CW.mission_id)=mid) AND ((CW.wpt_num) = (ctg1)))) 

如果你看看底部,你可以看到我在Right Join上引用ctg1mid的值,而Inner Joins引用其他文字值。最終我會想要做同樣的ctg2,ctg3ctg4

現在我運行這些作爲2個單獨的查詢,但發現它太慢了。如果我可以結合查詢(就像我在這裏展示的那樣),它可以大大加快速度。但我茫然瞭如何:

  • 使用選擇值早些時候說,從內部/左查詢加盟,他們推到需要對右連接值。
  • 我可能會錯誤地使用連接,但我認爲他們必須處理來自可能的相同表格的數據,只是在不同的支點上。
  • 如何使用MS Access GUI來幫助寫這樣的查詢。
  • 我知道這是用於MS Access的,但我只是爲了防止有類似的查詢可以移植到MS Access而爲MySQL添加標籤?

回答

0

您是否嘗試過使用UNION?

它可以讓你執行這個查詢(作爲兩個查詢,你提到的可能性),並加入你的輸出結果。

被警告,它會在結果集中吃掉(只顯示其中一個)你的重複項。

我還建議您閱讀了對不同類型的連接爲自己的利益,在以下答案:

MYSQL Joins

+0

好有關工會的事情是,他們只是添加更多的行的結果。我想要將這些值添加爲新列。 – 2015-03-31 22:53:59

+0

重新閱讀 - 我將如何加入聯盟後的結果?同樣,我需要將「第一個」查詢的結果提供給「第二個」查詢。我不知道該怎麼做。 – 2015-04-01 18:52:42

相關問題