Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как повторить запись в запросе SELECT

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
///////// ..................


Question Ну даже незнаю как тебе помочь
Думал думал и не придумал как сделать запросик, наверное просто нельзя.....

Idea Тогда сделай прогу....
я уже описывал см. в форуме...:
MSAccess->Report-> Как программно добавить данные?

Exclamation Немного инфо...
Короче временную таблицу создай.... закинь туда нужные данные в любых количествах.... а с него выводи отчет....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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 (ограничивает число повторяющихся записей, можно что-то еще придумать) Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
критикан



Зарегистрирован: 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

СообщениеДобавлено: Ср Июл 19 2006 11:12    Заголовок сообщения: Ответить с цитатой

А чем тебе не понравился вариант предложенный здесь http://forum.citforum.ru/viewtopic.php?t=43083
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Чт Июл 20 2006 10:56    Заголовок сообщения: Если бы у нас был обученный доберман и перчатка Ответить с цитатой

Lamers писал(а):
А чем тебе не понравился вариант предложенный здесь http://forum.citforum.ru/viewtopic.php?t=43083

Если использовать вспомогательные таблицы, построчное сканирование и т. п., то тут можно ваять что угодно, как угодно и в чём угодно. Вопрос-то, как я понимаю, был о возможности выполнения действия одним запросом из одной таблицы.
------------------------------------------------------
Если бы у нас был обученный доберман и перчатка с руки преступника!
(c) 17 мгновений весны
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lamers



Зарегистрирован: 29.06.2006
Сообщения: 16

СообщениеДобавлено: Пн Июл 24 2006 09:50    Заголовок сообщения: Re: Если бы у нас был обученный доберман и перчатка Ответить с цитатой

критикан писал(а):
Lamers писал(а):
А чем тебе не понравился вариант предложенный здесь http://forum.citforum.ru/viewtopic.php?t=43083

Если использовать вспомогательные таблицы, построчное сканирование и т. п., то тут можно ваять что угодно, как угодно и в чём угодно. Вопрос-то, как я понимаю, был о возможности выполнения действия одним запросом из одной таблицы.

Ну вот как раз в том примере и нет никаких доп. таблиц Smile
Если есть мозги, то можно и запрос нумерацией сделать подзапросом главного
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Пн Июл 24 2006 10:30    Заголовок сообщения: Так о чём был вопрос?.. Ответить с цитатой

Так о чём был во...
------------
End of connect...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...