![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с запросами [Paradox]
Константинов © (2004-11-25 01:43:00)Есть две таблицы 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-26 03:18:00) [1]>Только немного смущает наличие двух полей с именами пользователей
так одно или другое может оказаться 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)
)
Константинов (2004-11-25 18:19:00) [2]Спасибо! Все получилось! :) Только немного смущает наличие двух полей с именами пользователей. Сейчас попробую вынести список пользователей в отдельную таблицу и настроить Lookup
ЮЮ (2004-11-25 03:34:00) [3]>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