Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Ginger
Зарегистрирован: 12.03.2006 Сообщения: 6 Откуда: Из-за компутера!
|
Добавлено: Вс Мар 12 2006 02:27 Заголовок сообщения: Как повторить запись в запросе SELECT |
|
|
Плиз, помогите! Уже голову сломал, не знаю как сделать...
Задача такая:
у меня есть запрос (пример):
SELECT name, count FROM any_table;
возврашается результат:
имя 1 | 3
имя 2 | 5
имя 3 | 3
имя 4 | 4
в поле count содержатся числа, так вот: мне нужно чтобы в ответе запроса строки повторялись столько раз сколько в поле count занесено. т.е. ответ на запрос должен выглядеть так:
имя 1 | 3
имя 1 | 3
имя 1 | 3
имя 2 | 5
имя 2 | 5
имя 2 | 5
имя 2 | 5
имя 2 | 5
имя 3 | 3
имя 3 | 3
имя 3 | 3
имя 4 | 4
имя 4 | 4
имя 4 | 4
имя 4 | 4
Возможно ли это сделать на SQL?
Если не возмоно будет и придется выбрать другой способ, то: Все это реализовано в Access2002. Необходимо чтобы в отчете было такое количество элементов как я пояснил выше. Как написать программу повторения на VB я знаю, но не знаю как добавить новую строку в "Облать данных" отчета (т.е. новый элемент данных в отчет).
Помогите, очень нужно срочно!
Заранее спасибо. |
|
Вернуться к началу |
|
|
vladimir_kg
Зарегистрирован: 05.04.2006 Сообщения: 31
|
Добавлено: Ср Апр 05 2006 13:37 Заголовок сообщения: Re: Как повторить запись в запросе SELECT |
|
|
Ginger писал(а): | Плиз, помогите! Уже голову сломал, не знаю как сделать...
Задача такая:
у меня есть запрос (пример):
SELECT name, count FROM any_table;
возврашается результат:
имя 1 | 3
имя 2 | 5
имя 3 | 3
имя 4 | 4
///////// .................. |
Ну даже незнаю как тебе помочь
Думал думал и не придумал как сделать запросик, наверное просто нельзя.....
Тогда сделай прогу....
я уже описывал см. в форуме...:
MSAccess->Report-> Как программно добавить данные?
Немного инфо...
Короче временную таблицу создай.... закинь туда нужные данные в любых количествах.... а с него выводи отчет.... |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Сб Апр 15 2006 17:27 Заголовок сообщения: |
|
|
Можно.
Задача в том, как в область данных запихать значение из поля группировки данных.
Попробуй так:
Сделай в отчете группировку по нужному полю. В поле группировки поставь элемент, который суммирует значение поля. Назови этот элемент SUM_FIELD. Сделай этот элемент невидимым.
А теперь в поле данных поставь еще один элемент. В качестве источника данных укажи =Me!SUM_FIELD.
Идея понятна? |
|
Вернуться к началу |
|
|
Niker
Зарегистрирован: 20.04.2006 Сообщения: 29 Откуда: Ванино
|
Добавлено: Чт Апр 20 2006 02:25 Заголовок сообщения: |
|
|
Можно попробовать так :
Код: | SELECT name,cou,lvl
FROM(SELECT *
FROM (
SELECT 'xxx' name, 1 COU FROM dual d1 UNION ALL
SELECT 'ccc', 5 FROM dual d1 UNION ALL
SELECT 'vvvv', 3 FROM dual d1 UNION ALL
SELECT 'bbb', 6 FROM dual d1 )),
(SELECT LEVEL lvl FROM dual d1 CONNECT BY LEVEL < 10)
WHERE lvl<=cou
GROUP BY name,cou,lvl |
где LEVEL < 10 (ограничивает число повторяющихся записей, можно что-то еще придумать) |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Вт Июл 18 2006 11:16 Заголовок сообщения: Re: Как повторить запись в запросе SELECT |
|
|
Ginger писал(а): | у меня есть запрос (пример):
SELECT name, count FROM any_table;
возврашается результат:
имя 1 | 3
...
имя 4 | 4
в поле count содержатся числа, так вот: мне нужно чтобы в ответе запроса строки повторялись столько раз сколько в поле count занесено. т.е. ответ на запрос должен выглядеть так:
имя 1 | 3
имя 1 | 3
...
имя 4 | 4
имя 4 | 4
Возможно ли это сделать на SQL? |
Вопрос немного не корректен. Видимо, г-н Ginger имел ввиду такой запрос:
SELECT name, count(*) FROM any_table GROUP BY name;
Тогда ответ будет примерно такой:
SELECT tab_main.name, tab_cnt.cnt
FROM any_table AS tab_main
INNER JOIN (SELECT name, count(*) AS cnt FROM any_table GROUP BY name) AS tab_cnt
ON tab_main.name=tab_cnt.name;
Если же г-н Ginger имел ввиду именно то, что написал (то есть count -- это имя поля, а не агрегатная функция), то SQL делать такое одним запросом в общем случае не умеет, так как тут нужно информацию из результата запроса закинуть в саму команду. А это при сегодняшнем развитии SQL'я может только дающий команду, то есть человек. |
|
Вернуться к началу |
|
|
Lamers
Зарегистрирован: 29.06.2006 Сообщения: 16
|
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Июл 20 2006 10:56 Заголовок сообщения: Если бы у нас был обученный доберман и перчатка |
|
|
Если использовать вспомогательные таблицы, построчное сканирование и т. п., то тут можно ваять что угодно, как угодно и в чём угодно. Вопрос-то, как я понимаю, был о возможности выполнения действия одним запросом из одной таблицы.
------------------------------------------------------
Если бы у нас был обученный доберман и перчатка с руки преступника!
(c) 17 мгновений весны |
|
Вернуться к началу |
|
|
Lamers
Зарегистрирован: 29.06.2006 Сообщения: 16
|
Добавлено: Пн Июл 24 2006 09:50 Заголовок сообщения: Re: Если бы у нас был обученный доберман и перчатка |
|
|
критикан писал(а): |
Если использовать вспомогательные таблицы, построчное сканирование и т. п., то тут можно ваять что угодно, как угодно и в чём угодно. Вопрос-то, как я понимаю, был о возможности выполнения действия одним запросом из одной таблицы.
|
Ну вот как раз в том примере и нет никаких доп. таблиц
Если есть мозги, то можно и запрос нумерацией сделать подзапросом главного |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пн Июл 24 2006 10:30 Заголовок сообщения: Так о чём был вопрос?.. |
|
|
Так о чём был во...
------------
End of connect... |
|
Вернуться к началу |
|
|
|