Вниз
Скачать: CL | DM;

SQL-запрос   Найти похожие ветки 

← →
icu ©   (2002-05-28 17:01) [0]

Hiya,

есть два простых запроса.

select
sum(value)
from
income
group by person_id

...

select
sum(value)
from
outcome
group by person_id


их можно объединить так, что бы результат в одной таблице был виден?


← →
Johnmen ©   (2002-05-28 17:06) [1]

- либо делать соединение (если возможно......)
- либо UNION


← →
zx ©   (2002-05-28 17:11) [2]

Не забудь ALL <- очень вредная штука:(((


← →
icu ©   (2002-05-28 17:12) [3]

Hiya,

неее. Я хочу видеть вот что:

person_id, взял, вернул.
1 10 5
2 100 300
...

и т.д.

То есть свод по задолженности как бы.


← →
Johnmen ©   (2002-05-28 17:16) [4]

Повторяю :
- либо делать соединение (если возможно......)
(если income и outcome один-к-одному по person_id )



← →
icu ©   (2002-05-28 17:19) [5]

Hiya,

грубо говоря. У меня есть таблица расход и таблица приход. В них есть поля "сумма", "человек". Надо состряпать один общий свод. Как делать объединения?

Может пример есть?


← →
Delirium ©   (2002-05-28 17:20) [6]

select income.person_id,
sum(income.value) as inValue,
sum(outcome.value) as outValue
from income
join outcome on income.person_id=outcome.person_id
group by income.person_id


← →
asafr ©   (2002-05-28 17:24) [7]

SELECT a.person_id, sum(a.value), sum(b.value)
FROM income a, outcome b
WHERE a.person_id=b.person_id
GROUP BY a.person_id


← →
icu ©   (2002-05-28 17:31) [8]

Нормально,

а если число записей в таблицах разное?


← →
Johnmen ©   (2002-05-28 17:33) [9]

>Delirium © (28.05.02 17:20)
>asafr © (28.05.02 17:24)

монопенисно... ;-)))))))))))))))))))))))))))))))))))

Только работать не будет корректно, если для income.person_id нет соответств. outcome.person_id и наоборот.... :)




← →
icu ©   (2002-05-28 17:35) [10]

Вот и я про что. Неужели хранимую писать надо?


← →
Johnmen ©   (2002-05-28 17:41) [11]

1. поппробуй внешнее соединение
2. в WHERE добавь соотв-ие условие


← →
Delirium ©   (2002-05-28 18:00) [12]

Ну усложните малость, я-же для примера написал - постенько
select distinct income.person_id,
sum(income.value) as inValue,
sum(outcome.value) as outValue
from income
left join outcome on income.person_id=outcome.person_id
group by income.person_id
union all
select
outcome.person_id,
sum(income.value) as inValue,
sum(outcome.value) as outValue
from outcome
left join income on outcome.person_id=income.person_id
group by outcome.person_id


← →
asafr ©   (2002-05-28 18:14) [13]

Ну, а использовать LEFT OUTER JOIN не пробовал?


← →
icu ©   (2002-05-28 18:33) [14]

Нет, не выходит каменный цветок. =(


← →
Delirium ©   (2002-05-28 19:02) [15]

> asafr

"Ну, а использовать LEFT OUTER JOIN не пробовал?" - в MSSQL left join и left outer join - это одно и то-же см.Books Online

> icu

А чего не устраивает ?


← →
Delirium ©   (2002-05-28 19:09) [16]

> All

В принципе для такого рода объединений нужен full join, но так-как у нат тут агрегация то, понадобятся вложенные запросы, а union - это просто и быстро.


← →
yozhik   (2002-05-28 19:20) [17]

CREATE VIEW SameName
AS
SELECT personid
FROM income
UNION ALL
SELECT personid
FROM outcome

----

select SameName.personid, Sum(income.income), Sum(outcome.outcome)
from SameName LEFT OUTER JOIN income on samename.presonid=income.personid LEFT OUTER JOIN outcome on samename.presonid=outcome.personid
group by samename.personid

вроде правильно написал, но смысл такой: 1 запрос на объединение, 2-связь 1-го запроса с тбл.


← →
Delirium ©   (2002-05-28 19:30) [18]

> yozhik

Ты забыл distinct в представлении


← →
yozhik   (2002-05-28 20:06) [19]

не надо там distinct, иначе не все personalid могут выбраться



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.01 c
1-65036
sea2002
2002-06-09 18:18
2002.06.20
Поиск слова в Memo


8-65183
Anics
2002-02-06 09:24
2002.06.20
Экран монитора -> массив точек -> BMP


1-65046
koty
2002-06-10 08:45
2002.06.20
Печать из RichEdit a или Memo


8-65180
FOD
2002-02-04 18:22
2002.06.20
Mediaplayer


3-64986
Ulugbek
2002-05-29 09:28
2002.06.20
Немогу определить настройки филтера




   Наверх