![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Объединение таблиц для создания отчета [D7, XP]
TimScorp © (2006-04-03 18:55:00)Доброго времени суток!!!
Вопрос в следующем:
Имеем три таблицы в Access с полями:
Таблица 1: Fam - текст, AP - числовое, Date - Дата
Таблица 2: Fam - текст, AM - числовое, Date - Дата
Таблица 3: Fam - текст, SV - числовое, Date - Дата
Johnmen (2006-04-03 23:18:00) [1]
> sniknik © (03.04.06 23:12) [8]
Да-да...
sniknik (2006-04-03 23:12:00) [2]можно, но тогда так, чтобы было похоже
SELECT Fam, Sum(AP) AS AP, Sum(AM) AS AM, Sum(SV) AS SV FROM
(SELECT Fam,AP,0 AS AM,0 AS SV FROM T1
UNION ALL
SELECT Fam,0,AM,0 FROM T2
UNION ALL
SELECT Fam,0,0,SV FROM T3) AS tt
GROUP BY Fam
Johnmen (2006-04-03 22:42:00) [3]Тогда почему бы не так?
SELECT Fam, SUM(F) FROM
(SELECT Fam, AP AS F FROM T1
UNION ALL
SELECT Fam, AM AS F FROM T2
UNION ALL
SELECT Fam, SV AS F FROM T3) AS TT
GROUP BY Fam
TimScorp (2006-04-03 22:24:00) [4]ща попробую
С уважением TimScorp
sniknik (2006-04-03 22:18:00) [5]вот так.
SELECT a1.Fam, AP, AM, SV FROM
((SELECT Fam, Sum(AP) AS AP FROM T1 GROUP BY Fam) AS a1
LEFT JOIN
(SELECT Fam, Sum(AM) AS AM FROM T2 GROUP BY Fam) AS a2 ON a1.Fam = a2.Fam)
LEFT JOIN
(SELECT Fam, Sum(SV) AS SV FROM T3 GROUP BY Fam) AS a3
ON a1.Fam = a3.Fam
будет похоже...
Johnmen (2006-04-03 21:37:00) [6]Запрос и запроса работает?
TimScorp (2006-04-03 20:35:00) [7]Удалено модератором
Примечание: Создание пустых соощений
TimScorp (2006-04-03 18:56:00) [8]Допустим в Таблице 1 данные:
Иванов 1 31.03.2006
Петров 1 30.03.2006
Иванов 1 01.04.2006
Сидоров 1 30.03.2006
Иванов 1 01.04.2006
Сидоров 1 02.04.2006
В Таблице 2:
Сидоров 1 30.03.2006
Петров 1 31.03.2006
В Таблице 3:
Иванов 1 01.04.2006
TimScorp (2006-04-03 18:56:00) [9]Теперь нужно создать отчет (FreeReport) что бы была таблица вида:
Fam AP AM SV
Иванов 3 0 1
Петров 1 1 0
Сидоров 2 1 0
Итого 6 2 1
Мне приходится проходить по полям всех трех таблиц, суммировать данные и заносить их в четвертую таблицу в которой есть поля : Fam, AP, AM, SV и заносить туда данные.
Можно ли это сделать проще???
С уважением TimScorp.