2012-05-23 63 views
0

我写这需要一个SQL语句:SQL查询帮助 - 嵌套我想

  1. 寻找有一定数量
  2. 匹配的工作,另一台工作
  3. 显示结果

这是我目前拥有的。

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

Hmmmmm

回答

4

有没有需要嵌套;这是一个简单连接的需要的,这将有显式连接符号来最好写成:

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

你不需要第二凡在你的声明(这是一个语法错误,你应该提供给我们用你的DBMS给你的错误信息)。您不需要将比较与TRUE进行比较。

FROM子句中逗号分隔的表名列表在SQL-86和SQL-89中是必需的,但从SQL-92支持添加到DBMS中以来并不需要。你应该知道它,以便如果你阅读旧的SQL,你知道它的意思。但是你应该只使用新的JOIN表示法,除非工作场所标准压力过大(并且不明智),否则会使用旧的表示法。

根据您使用的DBMS,您可能会发现不允许在表别名中使用AS(Oracle),即使标准表示它是可以的。这种差异就是为什么在问题中包含关于数据库管理系统的信息是一个好主意。

+0

+1表名风格的额定列表。这种风格早已不在模拟砖机手中,而且OP还需要现代化。 –

4

你不需要=真,或第二的位置。

只是

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

尼斯:-)感谢您指出了逗号SEPA – Mikey3Strings

1
  1. 找工作有一定的数量:其中的jobId = '273121'
  2. 匹配工作到另一个表:内上pj.sOtherRef加入= j.sOtherRef
  3. 显示结果:SELECT *从PreviousJobs pj则

查询将是..

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