0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
|
|
1 | |
Как сделать выборку из таблицы и произвести подсчет?10.06.2010, 16:52. Показов 1071. Ответов 6
Метки нет Все метки)
(
Привет всем.
Имеется таблица с полями 'Автор', 'Соавтор' Нужно составить список всех Авторов и Соавторов в один общий список с соответствующим количеством. Причем, даже Соавторы должны попасть в этот список. Т.е., например. Автор Соавтор Иванов Петров Петров Сидоров Волков Иванов Петров Медведев Выходная табличка должна иметь вид: [Автор и Соавторы] [Количество] Волков 1 Иванов 2 Медведев 1 Петров 3 Сидоров 1 Как сделать выборку из таблицы и как бы выглядел скрипт ASP-странички с готовым уже списком. Просьба помочь. Бьюсь уже который день. Пргресс, мягко говоря, отсутствует.
0
|
|
10.06.2010, 16:52 | |
Ответы с готовыми решениями:
6
Подскажите как сделать выборку из таблицы Как сделать выборку из таблицы и представления Как правильно сделать выборку по датам из таблицы. |
Basch
|
|
10.06.2010, 17:27 | 2 |
Ваша проблема оттого, что неправильно организована БД. У Вас явная избыточность - одна и та же сущность (в данном случае - фамилия) хранится в двух полях)
Вместо того, чтобы фантазировать на тему выборок, переделайте таблицу, например, так: Id | Id_Произведения | Фамилия | Является соавтором --------------------------------------------------- 1 1 Иванов нет 2 1 Петров да --------------------------------------------------- Это если я правильно конечно представил Ваши данные и если у Вас есть возможность это всё править... |
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
|
|
10.06.2010, 17:42 [ТС] | 3 |
Дело в том, что на это есть причины. Авторы и соавторы должны быть в разных полях. Если бы они были в одном поле, я просто сделал бы один рекордсет с подсчетом одинаковых фамилий.
Пытался делать два рекордсета. Один для авторов, а другой для соавторов. Но в конечном счете не знаю, как их объединить. аже пытался использовать Do While ... Loop.
0
|
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,908
|
|
10.06.2010, 17:46 | 4 |
Такая структура таблицы неоптимальна. Фамилии авторов лучше хранить в отдельной таблице, а в полях вышепреведенной таблицы хранить id автора.
Тем не менее задачу можно решить средствами SQL. (Проверялось под MS SQL 2000) Код
SELECT sAuthor, count(sAuthor) cnt INTO #t FROM auth GROUP BY sAuthor UNION ALL SELECT sCoAuthor, count(sCoAuthor) cnt FROM auth GROUP BY sCoAuthor SELECT sAuthor, sum(cnt) cnt FROM #t GROUP BY sAuthor ORDER BY sAuthor ASC DROP TABLE #t
0
|
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
|
|
11.06.2010, 07:43 [ТС] | 5 |
Вообще-то, у меня Access. Выдает ошибку
ADODB.Recordset (0x800A0BB9) Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
0
|
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,908
|
|
13.06.2010, 13:24 | 6 |
Тогда делайте отдельный подсчет кол-ва авторов и соавторов в SQL и потом вручную подсчитвайте кол-во вхождений каждого автора.
0
|
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
|
|
14.06.2010, 07:55 [ТС] | 7 |
Я так и сделал.
SQLTemp1 = 'SELECT Author, count(Author) AS XAuthor FROM Table1 GROUP BY Author UNION SELECT CoAuthor, count(CoAuthor) AS XAuthor FROM Table1' SQLTempAll = 'SELECT Author, Count(Author) AS CountAuthor FROM (' & SQLTemp1 & ') GROUP BY Author ORDER BY Author' Сработало. В общем, всем thanks.
0
|
14.06.2010, 07:55 | |
Помогаю со студенческими работами здесь
7
Как сделать выборку из таблицы с интервалом в 30 секунд?
Как сделать выборку данных из ячейки таблицы? Как сделать сложную выборку из таблицы температур? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |