Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли сделать такой запрос


NOV ©   (2003-04-22 16:31:00) 

Проветствую All!
Сразу к делу
Есть две таблицы связь многие ко многим через третью таблицу

Table AUTOR
ID идентификатор
Name имя
... другие поля неважно


Table Books
ID идентификатор
Name имя
... другие поля неважно

Table AutorBooks
ID_B идентификатор книги
ID_A идентификатор автора

ВНИМАНИЕ ВОПРОС!
Можно ли построить SQL запрос который бы выдавал
в одной записи
Наименование книги и всех авторов этой книги
типа группировка а поле авторов суммировать

Заранее спасибо!


NOV   (2003-04-22 17:35:00) [1]

TO Johnmen
Хорошая идея
Сейчас в Accessе попробовал так
сначала перекресный запрос где: строки -> книги,
столбцы-> авторы,
значения-> фамилии
а потом по нему второй запрос склеивая всех авторов
почти то, что надо, но если будут добавляться авторы
то как обновлять второй запрос там строго прописано
что складыват :(
Еще мысли есть?


Дмитрий Баранов   (2003-04-22 17:24:00) [2]

NOV (22.04.03 17:07)
Один шут курсор для подзапроса надо объявлять-открывать-фетчить и склеивать в результирующую строку.


Johnmen   (2003-04-22 17:17:00) [3]

>NOV (22.04.03 17:07)

Под "натуральным" имел в виду не степень сложности и вложенности, а тот, который обращается к таблицам и только к ним. (не к ХП или ВЬЮ).


Соловьев   (2003-04-22 17:13:00) [4]

СУБД?
ХП


NOV   (2003-04-22 17:07:00) [5]

TO ЖУК
Немного не то этот запрос выдает количество авторов
а мне нужны их фамилии сцепленные вместе допустим через запятую
КАК зачем, чтобы в одной записи все авторы были

TO Johnmem
А ненатуральным, вложеным, любым но с помощью SQL


Жук   (2003-04-22 16:56:00) [6]

Интересно, зачем это надо ?


Жук   (2003-04-22 16:52:00) [7]

select b.name,a.name,
(select count(ab1.id) from AutorBooks ab1 where ab1.id_b=b.id) as awtory
from autor a,books b, autorbooks ab
where b.id=ad.id_b and ab.id_a=a.id
order by b.name

Тут три. :-(


Дмитрий Баранов   (2003-04-22 16:52:00) [8]

нельзя, так как для строк нет аггрегирующих функций.


Johnmen   (2003-04-22 16:51:00) [9]

>ВОПРОС АКАДЕМИЧЕСКИЙ МОЖНО ЛИ С ПОМОЩЬЮ SQL

Одним натуральным запросом - нет.


NOV   (2003-04-22 16:46:00) [10]

TO Жук
два поля в одном название книги
в другом фамилии всех авторов этой книги


Жук   (2003-04-22 16:44:00) [11]

Что-то не очень понятно. Сколько полей в записи должно быть ?


NOV   (2003-04-22 16:44:00) [12]

Это понятно, это любая база позволяет,
но в этом случае придеться представлять через дополнительную таблицу, вопрос не как сделать, я сделал на делфи через вычисляемое поле
ВОПРОС АКАДЕМИЧЕСКИЙ МОЖНО ЛИ С ПОМОЩЬЮ SQL


Дмитрий Баранов   (2003-04-22 16:35:00) [13]

Написать функцию. MS SQL или Oracle это позволяют.


Наверх

Титульная страница Поиск, карта сайта Написать письмо