Главная страница
    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.031 c
1-1102739411
Eugeni
2004-12-11 07:30
2004.12.26
TListBox


6-1097758501
Григорьев Антон
2004-10-14 16:55
2004.12.26
Как авторизоваться на прокси?


4-1100189391
Dominus
2004-11-11 19:09
2004.12.26
Раскладка клавиатуры


3-1101636673
Guma
2004-11-28 13:11
2004.12.26
Кодировка в MS SQL Server.


1-1103056989
Kolan
2004-12-14 23:43
2004.12.26
Чё то я забыл как из типизированного файла считать.





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