2015-10-06 116 views
0

假设我有两个表lpn和lpn_detail 如果我们在lpn表中使用lpn_id,我们只会得到一条记录。 如果我们在lpn_detail表中使用lpn_id,我们将得到多个记录,或者我们只能得到一条记录。在SQL条件下需要帮助

当我们加入这两个表时,我需要一个条件,其中Lpn_Detail的多条记录只应该作为结果获取。

select * from lpn inner join LPN_DETAIL 
on lpn.lpn_id = lpn_detail.lpn_id 
where 1=1 
and lpn.LPN_FACILITY_STATUS='30' 
and lpn.INBOUND_OUTBOUND_INDICATOR='I'; 
+0

可以告诉你,你可以把它写我们这两张表是什么样子的,你对这些数据的期望是什么? – Vance

+0

select * from lpn 其中LPN_ID ='7540023'; – Arun

+0

SELECT * FROM LPN_DETAIL WHERE LPN_ID ='7540023'; – Arun

回答

0

您的查询完整无缺。 如果您只想选择特定列,请在选择查询中使用列名称而不是*。

select col1,col2,col3 from lpn inner join LPN_DETAIL 
on lpn.lpn_id = lpn_detail.lpn_id 
where 1=1 
and lpn.LPN_FACILITY_STATUS='30' 
and lpn.INBOUND_OUTBOUND_INDICATOR='I'; 
0

您的查询正常,您必须编写LPN_DETAIL。*而不是*来只读取LPN_DETAIL列。

select LPN_DETAIL.* from lpn inner join LPN_DETAIL 
on lpn.lpn_id = lpn_detail.lpn_id 
where 1=1 
and lpn.LPN_FACILITY_STATUS='30' 
and lpn.INBOUND_OUTBOUND_INDICATOR='I'; 
0

如果你只需要与同一LPN多个LPN_DETAIL记录您可使用子查询:

select * from lpn inner join LPN_DETAIL 
on lpn.lpn_id = lpn_detail.lpn_id 
where 1=1 
and lpn.LPN_FACILITY_STATUS='30' 
and lpn.INBOUND_OUTBOUND_INDICATOR='I' 
and lpn_detail.lpn_id in (select lpn_id 
          from lpn_detail 
          group by lpn_id 
          having count(*)>1); 

或分析功能:

select * from(
select lpn.*,lpn_detail.*, 
     count(*) OVER (partition by lpn_detail.lpn_id) cnt 
from lpn inner join LPN_DETAIL 
on lpn.lpn_id = lpn_detail.lpn_id 
where 1=1 
and lpn.LPN_FACILITY_STATUS='30' 
and lpn.INBOUND_OUTBOUND_INDICATOR='I') 
where cnt>1; 
+0

您的查询获取多个记录,从lpn_detail但它也获取的唯一一个record.I只需要多发的记录不是单一records.Is这可能吗? SELECT * FROM LPN内上lpn.lpn_id = lpn_detail.lpn_id 加入LPN_DETAIL 其中1 = 1 和lpn.LPN_FACILITY_STATUS = '30' 和lpn.INBOUND_OUTBOUND_INDICATOR = 'I' 和lpn_detail.lpn_id在(由lpn_id 具有COUNT(*)> 1选择lpn_id从lpn_detail 组 ); – Arun

+0

谢谢你'Anton Zaviriukhin'为你提供的帮助。 – Arun

+0

谢谢大家:) – Arun