Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

Помогите с запросами   Найти похожие ветки 

 
Константинов ©   (2004-11-25 01:43) [0]

Есть две таблицы DataIn и DataOut ( приход и расход ) в каждой одинаковые поля User и Summ ( полбзователь и сумма ).
Как написать запрос, который выводил бы имя юзера и суммы прихода и расхода для него. Пишу:

Query1.SQL.Add("

SELECT DataIn."User",
 Sum ( DataIn."Summ" ) AS Приход,
 Sum ( DataOut."Summ" ) AS Расход
FROM DataIn, DataOut
WHERE DataIn."User" = DataOut."User"
GROUP BY DataIn."User"");

И это работает не корректно. Как учесть пустые поля? и вывести для них сумму?

Заранее спасибо.


 
ЮЮ ©   (2004-11-25 03:34) [1]

>WHERE DataIn."User" = DataOut."User"

по этому условию для 2х записей в DataIn и 3х записей в DataOut получишь 6 в результирующеи наборе. А если в одной таблице нет записей для User-а, а в другой есть, то в результирубшем наборе их не будет :(

в БД помещаешь файл SummaryIn.sql c текстом:
SELECT User User, SUM(Summ) Summ FROM DataIn GROUP BY USER

и SummaryOut.sql
SELECT User User, SUM(Summ) Summ FROM DataOot GROUP BY USER

а в запросе пишешь
SELECT
 SummaryIn.User UserIn, SummaryOut.User UserOut,
 SummaryIn.Summ SumIn,  SummaryOut.Summ SumOut
FROM
 "SummaryIn.sql" i FULL JOIN "SummaryOut.sql" o ON i.User = o.User


 
Константинов ©   (2004-11-25 18:19) [2]

Спасибо! Все получилось! :) Только немного смущает наличие двух полей с именами пользователей. Сейчас попробую вынести список пользователей в отдельную таблицу и настроить Lookup


 
ЮЮ ©   (2004-11-26 03:18) [3]

>Только немного смущает наличие двух полей с именами пользователей

так одно или другое может оказаться NULL
Добавь Calculated поле, в котором показывай только одно - непустое

>Сейчас попробую вынести список пользователей в отдельную таблицу и настроить Lookup

Таблица пользователей - это хорошо, только нужен будет не Lookup, а мзмененный запрос

SELECT
 Users.*,  SummaryOut.User UserOut, SummaryOut.Summ SumOut
FROM
 USERS u
 LEFT JOIN "SummaryIn.sql" i ON u.Id = i.User
 LEFT JOIN "SummaryOut.sql" o ON u.Id = o.User
WHERE
 NOT (
   (i.User IS NULL) AND (o.User IS NULL)
 )



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

Форум: "Базы";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.046 c
3-1101587768
Fedor
2004-11-27 23:36
2004.12.26
Сортировка IBTable


14-1102496634
DelphiN!
2004-12-08 12:03
2004.12.26
Не подскажите программу форматирования стиля исходников Делфи


3-1101714110
nstur
2004-11-29 10:41
2004.12.26
Как определить обязательное поле или нет?


3-1101890148
Iova
2004-12-01 11:35
2004.12.26
Можно выполнять системные запросы в Query


4-1100025299
AlphA
2004-11-09 21:34
2004.12.26
Скрин-шот не снимается, когда прогрмму вызывает Apache





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский