Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.005 c
7-65267
SerVS - S
2002-02-22 19:26
2002.06.20
Драйвер клавиатуры


1-65048
koty
2002-06-10 08:40
2002.06.20
Масштабирование формы


1-65080
evgan
2002-06-10 11:44
2002.06.20
Строка меню.


1-65165
VID
2002-05-30 18:06
2002.06.20
Не работает функция RemoveDir


6-65188
Fredericco
2002-04-09 11:53
2002.06.20
Новый вопрос по сокетам :-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский