嵌套select语句中的SQL内部联接
我试图在嵌套的select语句中进行内部联接。基本上,有第一个和最后一个原因ID,它们产生特定的数字EX:200。在另一个表中,有ID的定义。我正在尝试提取最后一个ID,以及对任何被提取的ID的相应注释,例如:200-Patient Cancelled,然后是第一个ID和对任何ID的注释 这就是我到目前为止所做的:嵌套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 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 )