Консультация № 52161
15.08.2006, 09:18
0.00 руб.
0 4 3
Добрый день, уважаемые эксперты!
Возник вопрос, прошу помощи. Суть такова: (VB6, Access97) . Имеются две главные таблицы: "Abiturient" и "Abiturient_V"
При проведении приема документов данные абитуриентов заносятся в табл. "Abiturient" . После вступительных экзаменов, данные абитуриентов, не прошедших испытаний удаляют во вторую табл. "Abiturient_V", где они хранятся в течении 5 лет.
Надо построить SQL-запрос и вывести количество записей в двух этих таблицах (т.е. сколько всего было подано заявлений), примерно так:
Код []:

SELECT Count(Abiturient.GlavID) AS Count_G
FROM Abiturient
UNION
SELECT Count(Abiturient_V.GlavID) AS Count_V
FROM Abiturient_V

Выводится:
Count_G=некоторое число
Count_V=некоторое число
Но надо найти общее число одним запросом
Может создать временную таблицу с данными двух таблиц и потом находить уже общее число? Только как?
И еще: выше указанный запрос работает в Access‘е , а в программе нет
Подскажите путь решения данной проблемы,
Всего доброго.

Обсуждение

Неизвестный
15.08.2006, 10:31
общий
это ответ
Здравствуйте, Робатько Анатолий Васильевич!
1. select count(abit.id) from (select id from abiturient union select id from abiturient_v) as abit
2. Как именно в программе не работает? Ошибку выдает? Какую?
Неизвестный
15.08.2006, 10:40
общий
И еще - зачем данные хранить в двух одинаковых таблицах? По-моему лучше будет хранить всех абитуриентов в одной таблице, только добавить логическое поле поступил/не поступил. Так работать будет легче.
Неизвестный
17.08.2006, 09:55
общий
это ответ
Здравствуйте, Робатько Анатолий Васильевич!

Если в VB 6.0 не работают запросы, а в Access-97 работают - проверьте, не используете ли Вы ADO вместо DAO, возможно, ошибка кроется в этом. Все записи об абитуриентах я бы хранил в одной таблице, из которой записи о неудачниках удалялись бы после определенной даты - Александр Шевченко дал ответ, как их сортировать. Только я бы еще ввел поле - счетчик, чтобы всегда иметь возможность просмотреть общее количество записей.
Неизвестный
19.08.2006, 17:39
общий
это ответ
Здравствуйте, Робатько Анатолий Васильевич!
Попробуйте вот так:
Select COUNT(a.GlavId) AS COUNT_G, COUNT(ag.GlavId) AS COUNT_V
FROM abiturient a, abiturient_v ag
В идеале у Вас будет 2 столбца и одна строка.

Или так:
Select COUNT(a.GlavId) + COUNT(ag.GlavId) AS VSE
FROM abiturient a, abiturient_v ag
Тут получится 1 строка и один столбец с общей суммой.
Форма ответа