Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
嵌套select语句中的SQL内部联接_Sql_Oracle - Fatal编程技术网

嵌套select语句中的SQL内部联接

嵌套select语句中的SQL内部联接,sql,oracle,Sql,Oracle,我试图在嵌套的select语句中进行内部联接。基本上,有第一个和最后一个原因ID,它们产生特定的数字EX:200。在另一个表中,有ID的定义。我正在尝试提取最后一个ID,以及对任何被提取的ID的相应注释,例如:200-Patient Cancelled,然后是第一个ID和对任何ID的注释 这就是我到目前为止所做的: Select BUSN_ID AREA_NAME DATE AREA_STATUS (Select B.REASON_ID A.LAST_REAS

我试图在嵌套的select语句中进行内部联接。基本上,有第一个和最后一个原因ID,它们产生特定的数字EX:200。在另一个表中,有ID的定义。我正在尝试提取最后一个ID,以及对任何被提取的ID的相应注释,例如:200-Patient Cancelled,然后是第一个ID和对任何ID的注释

这就是我到目前为止所做的:

Select BUSN_ID
    AREA_NAME
    DATE
    AREA_STATUS
(Select B.REASON_ID
      A.LAST_REASON_ID
      FROM BUSN_INFO A, BUSN_REASONS B
    WHERE A.LAST_REASON _ID=B.REASON_ID,
    (Select B.REASON_ID
          A. FIRST_REASON_ID
        FROM BUSN_INFO A, BUSN_REASONS B
        WHERE A_FIRST_REASON_ID = B.REASON_ID)
FROM BUSN_INFO 
我相信内部连接是最好的,但我一直在想它到底是如何工作的

所需结果如下所示为示例虚拟数据:

First ID -- Busn Reason --       Last ID -- Busn Reason
1           Patient Sick          2          Patient Cancelled
2           Patient Cancelled     2          Patient Cancelled
3           Patient No Show       1          Patient Sick

Justin_Cave的第二个例子是我用来解决这个问题的方法

如果要使用内联select语句,则内联select必须选择单个列,并且只需连接回作为查询基础的表即可。在您发布的查询中,您多次选择相同的数字标识符。我的猜测是,您确实希望从查找表中查询一个字符串列—我假设该列称为reason\u description

不过,按照惯例,您只需加入busn_原因表两次

SELECT i.busn_id,
       i.area_name,
       i.date,
       i.area_status,
       i.last_reason_id,
       last_reason.reason_description,
       i.first_reason_id,
       first_reason.reason_description
  FROM busn_info i
       JOIN busn_reason first_reason
         ON( i.first_reason_id = first_reason.reason_id )
       JOIN busn_reason last_reason
         ON( i.last_reason_id = last_reason.reason_id )

您的示例中没有PL/SQL。向我们展示您的完整存储过程我们需要表结构、示例数据和所需结果。我没有看到任何PLSQL,所以我从您的问题中删除了该标记。哦,对不起。我包括了SQL。但是在PLSQL环境中工作。请让我知道这是否对您有帮助。尝试了第一种方法,但它不起作用。第二种方法是——非常感谢。我确实忘记了原因描述。@IT15-你能解释一下这不起作用吗?第一种方法和第二种方法应该返回一个相同的数据集,假设reason_id在busn_Reasions中是唯一的,并且忽略空值;单行子查询返回多行。这意味着原因id在busn\u原因中不是唯一的。这可能意味着第二个查询将返回您并不真正需要的其他行。有什么快速解决方法吗?我为busn_原因设置了两个不同的别名,并将其设置在reason_id前面,以使其唯一
SELECT i.busn_id,
       i.area_name,
       i.date,
       i.area_status,
       i.last_reason_id,
       last_reason.reason_description,
       i.first_reason_id,
       first_reason.reason_description
  FROM busn_info i
       JOIN busn_reason first_reason
         ON( i.first_reason_id = first_reason.reason_id )
       JOIN busn_reason last_reason
         ON( i.last_reason_id = last_reason.reason_id )