![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Access. Записи детала в одну строку [D6]
msguns © (2005-10-06 11:49:00)Запросом, видимо, нельзя. А есть вообще способы сделать это на "сервере" ?
Поясню:
1. Таблица изданий (GID,..)
2. Таблица авторов (AID,FIO)
3. Таблица авторов издания (ID,GID,AID)
Надо "вытащить" всех авторов каждого издания и показать их в гриде одной строкой :
"Манифест комм.партии" ... К.Маркс,Ф.Энгельс,В.Ленин,...
Идея была: развернуть Тбл3 по типу кросса и подцепить связкой к осн.таблице. Но как это реализовать, не могу въехать, ведь кол-во "столбцов" (авторов) произвольное
Спасибо за любую помощь и советы
Danilka (2005-10-07 08:09:00) [1][20] msguns © (06.10.05 16:05)
Поэтому третьей таблицы не надо (а ее уже и нет - мир ее праху !)
Ну это ты зря, на мой взгляд.
Seg (06.10.05 17:40)
Я же не сам это придумал, мне это пытаются доказать:
> и однопользовательская - на dbf файлах.
неправда
Ты просто не понял. Имелось ввиду то, что многопользовательские тоже довольно успешно работают на ДБФ-ках.
Seg (2005-10-06 17:41:00) [2]В "потрепаться" ветка про 1С.
Seg (2005-10-06 17:40:00) [3]Я же не сам это придумал, мне это пытаются доказать:
> и однопользовательская - на dbf файлах.
неправда
sniknik (2005-10-06 17:34:00) [4]ну какже не работает, работает, и с dbf и с mssql, mysql и с ораклом может, стоит только захотеть... ;)
Seg (2005-10-06 17:23:00) [5]"набор файлов для хранения данных". Например, 1С.
А в другой ветке мне доказывали, что 1С не работает с dbf файлами.
Кто же прав?
msguns (2005-10-06 17:10:00) [6]>Seg (06.10.05 16:53) [27]
>По меркам 10-ти летней давности, это может быть и СУБД, хотя больше похожи на набор файлов для хранения данных.
Весьма глубокое заблуждение, говорящее о некомпетентности и пренебрежении к непознанному ;))
Да будет тебе известно, что огромное число реально действующих и поныне систем во всю используют высмеиваемый тобою "набор файлов для хранения данных". Например, 1С.
Кроме того, вполне удачный и шустрый движок BDE начал реально загибаться лишь после выхода в свет широкодоступных фриварных сиквель-серверов, а до этого эксплуатировался так, что и твоему раклу не снилось (имеется в виду к-во контор, которые им пользовались).
С твоего разрешения, один маленький совет:
Не надо позволять себе пренебрежительные выпады в адрес устаревшего, тем более такого, о котором не имеешь розового понятия.
Seg (2005-10-06 16:53:00) [7]парадоксы, дибэйзы, изибэйзы и т.д. - не СУБД, а так, погулять вышли
По меркам 10-ти летней давности, это может быть и СУБД, хотя больше похожи на набор файлов для хранения данных.
msguns (2005-10-06 16:31:00) [8]>Seg (06.10.05 16:21) [23]
>>СУБД, не располагающих возможностями ХП.
>Если нет Системы Управления - то это не СУБД, это просто База Данных
Надо понимать, что всякие там парадоксы, дибэйзы, изибэйзы и т.д. - не СУБД, а так, погулять вышли ибо ну нет у них ни триггеров, ни хранимых процедур, ни даже любимых тобою функций ?
Типа сама ОС разруливает базами.
Курдль (2005-10-06 16:29:00) [9]
> Seg (06.10.05 16:23) [24]
> Никакого. Пример для Курдля.
Спасибо, но я имел в виду "одним запросом" :)
> Seg (06.10.05 13:56) [13]
> В Оракле можно попотеть и сделать одним запросом.
Лень было попотеть? :)
Seg (2005-10-06 16:23:00) [10]Кстати, а какое отношение вся эта красота имеет к сабжу-то ?
Никакого. Пример для Курдля.
Seg (2005-10-06 16:21:00) [11]А в целом меня не столько интересует решение данной траблы в текущем "библиотечном" проекте, как вообще проблема в СУБД, не располагающих возможностями ХП.
СУБД - Система Управления Базой Данных.
Если нет Системы Управления - то это не СУБД, это просто База Данных.
msguns (2005-10-06 16:20:00) [12]>Seg (06.10.05 16:14) [21]
Ф-ция - это не совсем запрос, однако. Точнее, совсем не запрос, а скорее макрос.
Кстати, а какое отношение вся эта красота имеет к сабжу-то ? Где первым словом красным по светло-серому написано "Акцесс", т.е. СУБД БЕЗ ФУНКЦИХ И ХРАНИМЫХ ПРОЦЕДУР.
Seg (2005-10-06 16:14:00) [13]А нельзя ли пример, а то навскидочку что-то ничего на ум не приходит...
Конечно только одним запросом не обойтись, придется маленькую функцию написать.
Пример на тестовой базе SCOTT
текст функции:
create or replace function job_line
(
sjob in varchar2,
separator in varchar2)
return varchar2
is
Result varchar2(1000);
cursor cr1 is select t.ename from emp t where t.job=sjob;
begin
for i in cr1 loop
Result:=Result || i.ename || separator|| ' ';
end loop;
Result:=substr(Result,1,length(Result)-2);
return(Result);
end job_line;
текст запроса:
select t.job || ': '|| job_line(t.job,',')
from emp t
group by t.job || ': '|| job_line(t.job,',')
Результат:
1 ANALYST: SCOTT, FORD
2 CLERK: SMITH, ADAMS, JAMES, MILLER
3 MANAGER: JONES, BLAKE, CLARK
4 PRESIDENT: KING
5 SALESMAN: ALLEN, WARD, MARTIN, TURNER
msguns (2005-10-06 16:05:00) [14]>Danilka © (06.10.05 15:44) [19]
>А чего ты вообще пересел с mssql на access? :)
Я не пересел, я как бы на двух стульях ;)) Точнее, четырех. Еще ИБ и старые болячки на парадоксе.
"Це жыття, сынку" ;)))
>1. что мешает выбрать по третьей таблице только те книги, в которых есть >этот автор?
Речь в [10] идет о том, что в самом каталоге хранятся не указатели на автором, а строка, где они перечислены скопом через запятую. Эту строку правит не юзер, а программа-клиент. Он лишь выбирает нужного из справочника. Поэтому третьей таблицы не надо (а ее уже и нет - мир ее праху !)
>2. как часто у авторов книг меняецца ФИО?
При первичном заведении БД не очень опытными девочками-с-длинными-ногами-умеющими-быстро-стучать-по-клаве ошибок будет море. И только когда библиотекарь Марьиванна начнет сурьезно работать с базой, она это увидит. И будет исправлять.
А в целом меня не столько интересует решение данной траблы в текущем "библиотечном" проекте, как вообще проблема в СУБД, не располагающих возможностями ХП.
Danilka (2005-10-06 15:44:00) [15]msguns © (06.10.05 15:37)
2. Если бы был сиквель-сервер, то
А чего ты вообще пересел с mssql на access? :)
- если после каждого изменения в справочнике Авторов по триггеру будет вызываться ХП, ищущая по всей базе в стринговом поле контекстно ФИО автора и менять весь стринг, вырезая, вставляя и компонуя строку заново, сколько по времени будет выполняться апдэйт одной лишь записи справочника ?
Даже в горячечном бреду не додумался бы до такого ;))
вах.
1. что мешает выбрать по третьей таблице только те книги, в которых есть этот автор?
2. как часто у авторов книг меняецца ФИО?
:)
Курдль (2005-10-06 15:40:00) [16]
> msguns © (06.10.05 11:49)
> 1. Таблица изданий (GID,..)
> 2. Таблица авторов (AID,FIO)
> 3. Таблица авторов издания (ID,GID,AID)
А я вот думаю, зачем в 3. нужен ID? Ведь быть "дважды автором одной книги" как-то нелепо на мой взгляд :)
msguns (2005-10-06 15:37:00) [17]>Seg (06.10.05 15:30) [15]
>А если подумать и дописать триггер на редактирование/удаление и в нем найти этого автора и изменить/удалить его?
Охохонюшки.. ;((
1. В ацесе появились триггеры ?
2. Если бы был сиквель-сервер, то
- решается ХП, ну внимательнее читайте ответы, а ?
- если после каждого изменения в справочнике Авторов по триггерубудет вызываться ХП, ищущая по всей базев стринговом поле контекстноФИО автора и менять весь стринг, вырезая, вставляя и компонуя строку заново, сколько по времени будет выполняться апдэйт одной лишь записи справочника ?
Даже в горячечном бреду не додумался бы до такого ;))
Курдль (2005-10-06 15:33:00) [18]
> Seg (06.10.05 13:56) [13]
> В Оракле можно попотеть и сделать одним запросом.
Одним запросом? Не скриптом и не процедурой?
А нельзя ли пример, а то навскидочку что-то ничего на ум не приходит...
Seg (2005-10-06 15:30:00) [19]Конечно, если узер выкинет автора из справочника или поменяет ему ФИО, он так и останется в своих книгах со старым именем.
А если подумать и дописать триггер на редактирование/удаление и в нем найти этого автора и изменить/удалить его?
msguns (2005-10-06 15:21:00) [20]>Seg (06.10.05 13:56) [13]
>В Оракле можно попотеть и сделать одним запросом.
В скл-сервере можно запросто нарисовать ХП, которая легко это сделает ;)
>Если есть возможность модифицировать базу, то можно добавить в таблицу 3 еще одно поле, где хранить в одной строке всех авторов.
Именно этот способ и описан в [10], 2-й абзац ;) Только в основную таблицу (1)