2015-03-31 105 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

相关问题