Форум: "Базы";
Текущий архив: 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