1

私はSQLが初めてで、次のことをしようとしています:

私のクエリは現在、where 句に基づいて 2 つのフィールドを取得しています。

select distinct 
     count(distinct t1.p_id) "c1",
     count(distinct t2.sa_id) "c2" 
from capd_section t5, 
     capd_department t6,
     capd_person t1,
     capd_studentapplication t2,
     capd_module t4,
     capd_moduleapplication t3 
where (t3.ma_studentapplication(+)=t2.sa_id) and 
      (t3.ma_module=t4.m_id(+)) and 
      (t4.m_modulesection=t5.s_id(+)) and 
      (t4.m_moduledept=t6.d_id(+)) and 
      (t4.m_reference not like '%%FTA%%') and 
      **(t2.sa_reference like '212%%')** and 
      (t4.m_reference not like '%%HE%%') and 
      (t4.m_reference not like '%%PT%%') and 
      (t4.m_name not like 'NCTJ%%') and 
      (t4.m_reference not like 'ME%%') and 
      (t2.sa_student=t1.p_id) 
having (count(distinct t3.ma_id)>0)

私は同じクエリを持ちたいと思っていますが、where 句('213%%' のような t2.sa_reference)も引き戻します。(当年&前年)

したがって、合計で 4 つのフィールド (c1、c2、c3、c4) になります。それがまったく意味がある場合。それは可能ですか?

助けてくれてありがとう:)

4

2 に答える 2

1

or ステートメントを追加して 2 番目の値を確認し、次のようにクエリを試すことができます。

select distinct 
     count(distinct t1.p_id) "c1",
     count(distinct t2.sa_id) "c2" 
from capd_section t5, 
     capd_department t6,
     capd_person t1,
     capd_studentapplication t2,
     capd_module t4,
     capd_moduleapplication t3 
where (t3.ma_studentapplication(+)=t2.sa_id) and 
      (t3.ma_module=t4.m_id(+)) and 
      (t4.m_modulesection=t5.s_id(+)) and 
      (t4.m_moduledept=t6.d_id(+)) and 
      (t4.m_reference not like '%%FTA%%') and 
      ((t2.sa_reference like '212%%')or (t2.sa_reference like '213%%')) and 
      (t4.m_reference not like '%%HE%%') and 
      (t4.m_reference not like '%%PT%%') and 
      (t4.m_name not like 'NCTJ%%') and 
      (t4.m_reference not like 'ME%%') and 
      (t2.sa_student=t1.p_id) 
having (count(distinct t3.ma_id)>0);

ここで、句 as を使用して両方の値をチェックするように条件を変更しました((t2.sa_reference like '212%%')or (t2.sa_reference like '213%%'))。したがって、どちらかが満たされている場合は、行を取得できます。

于 2013-04-18T11:02:48.443 に答える