2015-10-06 89 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