Главная страница
    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.037 c
14-1101477178
Красная Майка
2004-11-26 16:52
2004.12.26
Очередное предновогоднее ММР


14-1102335018
Санёк
2004-12-06 15:10
2004.12.26
Помогите с информатикой


3-1101391279
a3a3ello
2004-11-25 17:01
2004.12.26
Проблема с execute statement в FB 1.5.1


1-1102695692
Dema-X
2004-12-10 19:21
2004.12.26
из dynamic Child зделать nill


1-1103102918
_Max_
2004-12-15 12:28
2004.12.26
Как отключить/перехватиывать буфер обмена Windows?





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