0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
1

Как сделать выборку из таблицы и произвести подсчет?

10.06.2010, 16:52. Показов 1071. Ответов 6
Метки нет (Все метки)

Привет всем.

Имеется таблица с полями 'Автор', 'Соавтор'

Нужно составить список всех Авторов и Соавторов в один общий список с соответствующим
количеством.
Причем, даже Соавторы должны попасть в этот список.

Т.е., например.

Автор Соавтор

Иванов Петров
Петров Сидоров
Волков Иванов
Петров Медведев

Выходная табличка должна иметь вид:

[Автор и Соавторы] [Количество]

Волков 1
Иванов 2
Медведев 1
Петров 3
Сидоров 1

Как сделать выборку из таблицы и как бы выглядел скрипт ASP-странички с готовым уже списком.

Просьба помочь. Бьюсь уже который день. Пргресс, мягко говоря, отсутствует.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2010, 16:52
Ответы с готовыми решениями:

Как сделать выборку из таблицы?
Добрый день, у меня есть таблица на Листе1, которая состоит из 5 колонок (Номер, Марка, Цвет,...

Подскажите как сделать выборку из таблицы
Смысл такой: Есть таблица импортированная из Excel, она представляла из себя таблицу расстояний,...

Как сделать выборку из таблицы и представления
Я новичок в SQL. Есть таблица (A) и представление (B). Нужно отобрать записи по определенным...

Как правильно сделать выборку по датам из таблицы.
Господа программисты, подскажите как решить такую проблемку: Есть таблица в базе данных MySQL, в...

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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2010, 07:55
Помогаю со студенческими работами здесь

Как сделать выборку из таблицы с интервалом в 30 секунд?
Добрый день! Товарищи, подскажите пожалуйста как сделать выборку из таблицы с интервалом в 30...

Как сделать выборку из пользовательской таблицы User ?
Создавал базу в access потом перенес ее в SQL Server. И в моей базе была таблица User. Я не учел...

Как сделать выборку данных из ячейки таблицы?
подскажите чайнику как вставить в отчет не весь номерной знак а тока его цифры, база прилагается....

Как сделать сложную выборку из таблицы температур?
Мне нужно сделать выборку из таблицы которая бы вывела среднесуточную температуру, на каждый день в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru