Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c