0

SQL開発者でOracle 11iを使用しています..

これは私のクエリです:

SELECT itm.stu_no,wm_concat(uif.names) 
FROM personal uif,Coll itm, Dep ihts
WHERE uif.stu_id IN('26',    '29',    '32')   
  and (uif.stu_no,uif.stu_no) in 
  (
       select itm.stu_no,itm.stu_test_no 
       from Col itm,Dep ihts  
       where itm.stu_no = ihts.stu_no
       AND itm.status = 'A'
       AND ihts.status = 'A'
  )
  AND itm.status = 'A'
  and  itm.stu_no=ihts.stu_no and ihts.status = 'A'
  group by itm.stu_no;

内側のクエリ (ストロング テキストとしてマーク) が返されます...

stu_no             stu_test_no
-----------------------------------
123                 234

しかし、完全なクエリは行を返しません。

これは予想される結果です..

stu_no              wm_concat(names)
------------------------------------------
123                  James Alex
234                  (null)

期待される結果を得る方法はありますか?

4

1 に答える 1

1

uif.stu_no両方123 あるように要求しているため、機能しません234
(123,123)は((123,234))

含まれておらず、(234,234)は((123,234))に含まれていません

あなたはこれを試すことができます:

SELECT itm.stu_no,wm_concat(uif.names) 
FROM personal uif,Coll itm, Dep ihts
WHERE uif.stu_id IN('26',    '29',    '32')   
  and uif.stu_no in 
  (
       select itm.stu_no 
       from Col itm,Dep ihts  
       where itm.stu_no = ihts.stu_no
       AND itm.status = 'A'
       AND ihts.status = 'A'
       union all
       select itm.stu_test_no 
       from Col itm,Dep ihts  
       where itm.stu_no = ihts.stu_no
       AND itm.status = 'A'
       AND ihts.status = 'A'
  )
  AND itm.status = 'A'
  and  itm.stu_no=ihts.stu_no and ihts.status = 'A'
  group by itm.stu_no;

しかし、なぜそうではありません:

SELECT itm.stu_no,wm_concat(uif.names) 
FROM personal uif, Coll itm, Dep ihts
WHERE uif.stu_id IN('26',    '29',    '32')   
  and (uif.stu_no = itm.stu_no OR uif.stu_no = itm.stu_test_no)
  AND itm.status = 'A'
  and itm.stu_no = ihts.stu_no 
  and ihts.status = 'A'
  group by itm.stu_no;
于 2012-07-04T11:15:37.863 に答える