2012-07-11 222 views
2

我正在为多站点公司构建IT支持门票。 我不能让我的头周围JOIN,INNER JOIN,ON等TSQL INNER JOIN

我有3个表:

  • 首先Support_TicketSite_ID,我已经从先前的查询有。

因此,我有Site_ID,并且需要获取负责支持该网站的工程师的姓名(字符串)。比方说HullSite_ID:1

另2个表:

  • Site_Details:含有(等等)Site_IDSite_Default_Engineer_ID
  • Engineers:含(除其他之外)[Engineer_ID]和Engineer_Display_Name

我想达到什么是(伪代码!):

return [Engineers].[Engineer_Display_Name] 
where 
    [Engineers].[Engineer_ID] = [Site_Details].[Site_Default_Engineer_ID] 
    (but first) return [Site_Details].[Site_Default_Engineer_ID] where 
    [Site_Details].[Site_ID] = [Support_Ticket].[Site_ID] 

如果是有道理的?

+0

你到目前为止尝试过什么?即使失败,看到你已经尝试过的东西也是有用的。 – 2012-07-11 11:00:50

+0

我正在运行2个单独的查询(在'这将工作,直到我细化它'基础) sql =“SELECT [Site_Default_Engineer_ID] from [Site_Details] WHERE [Site_ID] =”+ siteNo.ToString() (一些代码) 的engineerID = dbread2.GetValue(0)的ToString() (一些代码) SQL = “SELECT从[Engineer_Display_Name] [工程师] WHERE [Engineer_ID] =” +的engineerID (一些代码) engineerName = dbread1.GetValue(0).ToString() (某些代码) – 2012-07-11 11:23:49

回答

4

这个查询应该工作:

SELECT support_ticket.something, engineers.engineer_display_name 
FROM support_ticket 
JOIN site_details ON (site_details.site_id = support_ticket.site_id) 
JOIN engineers ON (engineers.engineer_id = site_details.site_default_engineer_id) 

它会显示出所有的门票和它们的默认工程师。添加WHERE条款以过滤要显示的故障单。

BTW:JOININNER JOIN之间没有区别。