Różnica dwóch SELECTów?

0

Mam problem, a mianowicie mam 2 zapytania select, które wyciągają sume w złączeniu po innych warunkach. Potrzebuje zrobić z tego jedno zapytanie, które mi tak naprawde zwróci różnice tych dwóch zapytań albo chociaż wyciągnie obie te wartości pod innymi nazwami, bo nie mam pojęcia jak to zrobić ?
przykład
select sum(kwota) kwota,
from tabela
where tabela.id = tabela2.id1

select sum(kwota) kwota
from tabela
where tabela.id = tabela2.id2

i potrzebuje tak naprawde kwota(z pierwszego zapytania) - kwota(z drugiego zapytania)
idzie cos takiego zrobić, bo niewiem czy to dobrze przedstawiłem

0

A jakie DB ? A poza tym coś te zapytania podejrzanie wyglądają - co to jest tabela2 ?

select (select ....) - (select ....) as roznica
from dual

b

0

DB to FirebirdSQL 1.5, a używam tego w Builderze C++

hm, no więc problem bardzo uprościlem.
tabela2 to to tak jakby wynik po zlączeniu z 2 SELECTa ( czyli po tych samych tabelach ale innych warunkach)

0

Czy to działa czy nie : ?

select (select ....) - (select ....) as roznica
from rdb$database

0

Jutro to dopiero moge sprawdzic .
Dlaczego w pierwszej wersji jest from dual
a w drugiej rdb&database

0

Bo w pierwszej wersji nie napisałeś jaki silnik, dual jest bodajże w Oraclu, a rdb$database to taki dual w firebirdzie.

0

Niestety nie działa.
IBExpert w którym prubuje to sprawdzic w ogóle nie widzie RDB&DATABASE

Zglasza również błędy, wpisując wyrażenia w nawiasy

0

Tam ma być $ a nie &.

Poza tym w niektórych narzędziach, jest opcja "Pokaż tabele systemowe", ale IBExpert'a nie znam. Spróbuj od prostego przykładu SELECT * FROM RDB$DATABASE. Aha i może sprubuj to zrobić na SYSDBA.

0

hm, no więc w ogóle nie widać tego "RDB$DATABASE" w IBExpercie

ostatnio usłyszałem, że do takich bardziej złożonych zapytań, powinno sie używać procedur
ale nie znam tego tematu w ogóle ?

0

A gdzie tak usłyszałeś. Różnica dwóch podzapytań, to jeszcze nie jest szczyt złożoności, chociaż można stored procke strzelić - a w nie tego selecta : )

Ściąg se flamerobina to zobaczysz rdb$database.

0

Można też tak:

select odjemna.kwota - odjemnik.kwota
  from (select sum(kwota) as kwota...) odjemna
        , (select sum(kwota) as kwota...) odjemnik

i nie ma problemu z witrualnymi tablicami typu dual, choć niezbyt to eleganckie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1