【问题标题】:Return item from another table in SQL从 SQL 中的另一个表返回项目
【发布时间】:2012-05-29 14:58:13
【问题描述】:

我正在努力让这个工作!我知道它很简单...

我有一个完整的工作表和一个包含位置的表(以便可以动态添加新位置并填充下拉列表等。

我想要做的是返回一个位置的所有工作(不是问题),它们被分配一个位置 ID,该位置 ID 与每个位置的 ID 相对应(包含 job_location_ID、job_Location_name、job_Location_Country)

sql = "SELECT  [job_ID],
        [job_ref],
        [job_title],
        [job_description],
        [job_location]
FROM    [Web_Xtr_HR]
WHERE   (
          ( [job_ext_int_both] = 1 )
          AND ( [job_location] = " + theIndex + " )
        )
ORDER BY [job_ID] DESC"

这会读取所有项目,所以我需要做的是,每个结果包括关联的 job_Location_name,以及另一个表中的 job_Location_ID ([Web_Xtr_Job_Locations])

帮助!

【问题讨论】:

  • 这将是大约 20 个 cmets 中的第一个,通知您您的代码容易受到 SQL 注入攻击。您应该考虑使用命令参数:forums.asp.net/t/886691.aspx/1

标签: asp.net sql tsql


【解决方案1】:

像这样使用内部联接:

"SELECT  [Web_Xtr_Job_Locations].job_Location_name,
        [Web_Xtr_HR].[job_ID],
        [Web_Xtr_HR].[job_ref],
        [Web_Xtr_HR].[job_title],
        [Web_Xtr_HR].[job_description],
        [Web_Xtr_HR].[job_location]
FROM    [Web_Xtr_HR]
        INNER JOIN [Web_Xtr_Job_Locations]
            ON [Web_Xtr_HR].job_location_id = [Web_Xtr_Job_Locations].job_location_id
WHERE   (
          ( [Web_Xtr_HR].[job_ext_int_both] = 1 )
          AND ( [Web_Xtr_HR].[job_location] = " + theIndex + " )
        )
ORDER BY [job_ID] DESC"

【讨论】:

    【解决方案2】:
    "SELECT  [job_ID],
            [job_ref],
            [job_title],
            [job_description],
            [job_location]
    FROM    [Web_Xtr_HR]
            INNER JOIN [Web_Xtr_Job_Locations]
                ON [Web_Xtr_HR].job.Location_ID = [Web_Xtr_HR]
    WHERE   (
              ( [job_ext_int_both] = 1 )
              AND ( [job_location] = " + theIndex + " )
            )
    ORDER BY [job_ID] DESC"
    

    【讨论】:

      【解决方案3】:

      您需要加入这两个表,以便从这两个表中选择列。

      SELECT  job_ID,
              job_title,
              job_Location_Name
      FROM    Web_Xtr_HR
              INNER JOIN Web_Xtr_Job_Locations
                  ON Web_Xtr_Hr.job_Location_ID = Web_Xtr_Job_Locations.job_LocationID
      WHERE   job_ext_int_both = 1 -- Add more filters as needed.
      

      INNER JOIN 将返回两个表中匹配的元素。要匹配的字段由ON 行确定。

      【讨论】:

      • 我一直在尝试,但我想我把自己弄得一团糟!!我会按照你的语法再刺一次。
      • @DarkcatStudios 我刚刚看到我修正了一个错字 - 我输入了 = 而不是 .
      【解决方案4】:

      谢谢大家,经过一番折腾,我最终得到了:

      SELECT 
      [Web_Xtr_HR].[job_ID], 
      [Web_Xtr_HR].[job_ref], 
      [Web_Xtr_HR].[job_title], 
      [Web_Xtr_HR].[job_description], 
      [Web_Xtr_HR].[job_location], 
      [Web_Xtr_Job_Locations].[job_location_name], 
      [Web_Xtr_Job_Locations].[job_location_country] 
      FROM 
      [Web_Xtr_HR]
          INNER JOIN [Web_Xtr_Job_Locations]
          ON [Web_Xtr_HR].[job_Location] = [Web_Xtr_Job_Locations].[job_Location_ID]
      WHERE   
      (([Web_Xtr_HR].[job_ext_int_both] = 1 )
      AND
      ([Web_Xtr_HR].[job_location] = " + theIndex + "))
      
      ORDER BY [Web_Xtr_HR].[job_ID] DESC
      

      【讨论】:

        猜你喜欢
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 2015-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-11-12
        • 1970-01-01
        • 2016-05-07
        相关资源
        最近更新 更多