2009-11-27 3 views
0

У меня есть две таблицы:очень простой SQL-запрос в Oracle 9

emp (empno,ename) 
address(empno,address) 

эми может иметь 0 или больше адреса.

Я хочу напечатать результат следующим образом:

  • когда эй имеют 0 адрес, то: Ин, ENAME, «нет адреса»
  • когда эй имеет 1 или больше адреса, то: enomename, "адреса найдено»

Я использую оракула 9dB

+7

Вы задали 54 вопросов, и не приняли ни одного ответа. – skaffman

ответ

3
select empno, ename, 
    case when (select count(1) from address where empno=emp.empno)>0 
     then 'adress found' 
     else 'no address' 
    end 
    from emp 
0

Попробуйте это

Входы:

Адрес Таблица

empno address 
1 address1 for name1 
1 address2 for name1 
2 address1 for name2 
2 address2 for name2 
2 address3 for name2 

Emloyee Таблица

empno ename 
1 name1 
2 name2 
3 name3 
4 name4 
5 name5 

Запрос

select distinct(e.empno),e.ename, 
    case when 
    a.address IS null then 'No Address' else 'Address found' end as Status 
    from @emp e 
    left join @address a 
    on e.empno = a.empno 

Выход:

empno ename  Status 
1  name1 Address found 
2  name2 Address found 
3  name3 No Address 
4  name4 No Address 
5  name5 No Address 
0

выберите e.empno, e.ename 'Адрес Found', как статус от
EMP е Адрес
где e.empno = a.empno
и a.address не является нулевым
UNION ALL
выберите e.empno, e.ename 'нет Адрес' в статусе от
EMP е, обратиться к
ш здесь e.empno = a.empno
и a.address является нулевым

Смежные вопросы