SQL查询帮助 - 嵌套我想

时间:2012-05-23 03:16:56

标签: sql nested

我正在编写一个需要的SQL语句:

  1. 寻找一定数量的工作
  2. 将该作业与另一张表匹配
  3. 显示结果
  4. 这就是我现在所拥有的。

    select * from PreviousJobs pj, Jobs j where jobId = '273121' 
    AND where (pj.sOtherRef = j.sOtherRef) = True    
    
    嗯,

3 个答案:

答案 0 :(得分:4)

你不需要= True,或者第二个。

只是

select * from PreviousJobs pj, Jobs j where jobId = '273121' 
AND pj.sOtherRef = j.sOtherRef 

答案 1 :(得分:4)

不需要筑巢;这是一个简单的JOIN,这是最好用明确的连接符号写的:

SELECT cj.*, pj.* 
  FROM PreviousJobs AS pj
  JOIN Jobs         AS cj ON pj.sOtherRef = cj.sOtherRef
 WHERE cj.jobId = '273121' 

您的语句中不需要第二个WHERE(这是语法错误;您应该向我们提供了DBMS为您提供的错误消息)。您无需将比较与TRUE进行比较。

在SQL-86和SQL-89中,必须使用逗号分隔的FROM子句中的表名列表,但由于SQL-92支持已添加到DBMS中,因此没有必要。您应该了解它,以便在阅读旧SQL时,您知道它意味着什么。但是你应该计划只使用新的JOIN表示法,除非工作场所标准的压力很大(并且是不明智的)使用旧的表示法。

根据您使用的DBMS,您可能会发现表别名中的AS不允许(Oracle),即使标准说它没问题。这种差异就是为什么在问题中包含有关DBMS的信息是个好主意。

答案 2 :(得分:1)

  1. 寻找具有一定数量的工作:jobId ='273121'
  2. 将该作业与另一个表匹配:pj.sOtherRef = j.sOtherRef
  3. 上的内部联接
  4. 显示结果:从PreviousJobs pj
  5. 中选择*

    查询将是..

    select *
      from PreviousJobs pj inner join Jobs j ON pj.sOtherRef = j.sOtherRef
     where j.jobId = '273121'
    
相关问题