Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询帮助-我认为是嵌套的_Sql_Nested - Fatal编程技术网

SQL查询帮助-我认为是嵌套的

SQL查询帮助-我认为是嵌套的,sql,nested,Sql,Nested,我正在编写一条SQL语句,它需要: 找一份有一定数量的工作 将该作业与另一个表匹配 显示结果 这就是我现在拥有的 select * from PreviousJobs pj, Jobs j where jobId = '273121' AND where (pj.sOtherRef = j.sOtherRef) = True Hmmmmm您不需要=True或第二个where 只是 不需要筑巢;这是一个需要的简单连接,最好使用显式连接表示法编写: SELECT cj.*, pj.*

我正在编写一条SQL语句,它需要:

  • 找一份有一定数量的工作
  • 将该作业与另一个表匹配
  • 显示结果
  • 这就是我现在拥有的

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

    Hmmmmm

    您不需要=True或第二个where

    只是


    不需要筑巢;这是一个需要的简单连接,最好使用显式连接表示法编写:

    SELECT cj.*, pj.* 
      FROM PreviousJobs AS pj
      JOIN Jobs         AS cj ON pj.sOtherRef = cj.sOtherRef
     WHERE cj.jobId = '273121' 
    
    您不需要语句中的第二个WHERE(这是一个语法错误;您应该向我们提供DBMS给您的错误消息)。您不需要将比较与真实进行比较

    在SQL-86和SQL-89中,FROM子句中以逗号分隔的表名列表是必需的,但自从数据库管理系统中添加了SQL-92支持后,就不再需要了。您应该了解它,以便在阅读旧SQL时了解它的含义。但是您应该计划只使用新的连接符号,除非工作场所标准对使用旧符号施加了巨大的(而且是不明智的)压力

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

  • 寻找具有特定编号的作业:其中jobId='273121'
  • 将该作业与另一个表匹配:pj.sOtherRef=j.sOtherRef上的内部联接
  • 显示结果:从上一个作业pj中选择*
  • 查询将是

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

    +1用于指出以逗号分隔的表格名称列表样式。这种风格早已不再是模拟砖手机的风格,OP真的需要现代化。
    select *
      from PreviousJobs pj inner join Jobs j ON pj.sOtherRef = j.sOtherRef
     where j.jobId = '273121'