2012-06-15 2 views
-2

У меня есть 5 столов:Как написать этот SQL против Oracle?

TABLE_A: 
    A_ID 

TABLE_B: 
    A_ID 
    B_ID 
TABLE_C: 
    B_ID 
    C_ID 
    C_SOME_NUMBER 

TABLE_D: 
    A_ID 
    D_ID 
TABLE_E: 
    D_ID 
    E_ID 
    E_SOME_NUMBER 

Как вы можете видеть, отношения отображения являются:

1 A --> n B 
1 B --> n C 
1 A --> n D 
1 D --> n E 

Я хочу написать SQL для расчета: подсчет A_ID что:

sum(C_SOME_NUMBER) != sum(E_SOME_NUMBER) 

Но я не знаю, как написать этот sql. Моя БД - Oracle

+0

@ Решение Fluffeh сравнивает только суммы, соответствующие одному и тому же 'A_ID'. Если 'TABLE_C' совпадал с определенными' A_ID' и 'TABLE_E', это не так, вам нужно, чтобы' A_ID' считался? –

ответ

2
select 
    count(Q1.ID) as 'whoopsie' 
from 
    (
     select 
      a.ID, 
      sum(c.some_number) as someNum 
     from 
      TA a, 
      TB b, 
      TC c 
     where 
      a.ID=b.IB 
      and b.ID=c.ID 
     group by 
      a.ID 
    ) Q1, 
    (
     select 
      a.ID, 
      sum(e.some_number) as someNum 
     from 
      TA a, 
      TD d, 
      TE e 
     where 
      a.ID=d.IB 
      and d.ID=e.ID 
     group by 
      a.ID 
    ) Q2 
where 
    Q1.ID=Q2.ID 
    and Q1.someNum != Q2.someNum 
Смежные вопросы