powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие ко многим и проблемы с выборкой на SQL
48 сообщений из 48, показаны все 2 страниц
Связь многие ко многим и проблемы с выборкой на SQL
    #35354358
Durilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите написать SQL-запрос в следующей ситуации:

Есть три таблицы:
первая: КНИГИ(КодКниги, Название)
вторая: АВТОРЫ(КодАвтора, ФИО)
третья: АВТОРЫ_КНИГИ(КодКниги, КодАвтора) – эта таблица по сути реализует связь многие-ко-многим между таблицами КНИГИ и АВТОРЫ.
Книга может иметь одного, двух и т.д. авторов,
Любой автор может написать одну, две и более книг.
Требуется написать SQL-запрос, который возвращал бы два столбца: первый – название книги, второй – авторы через запятую, например,

Книга1 Иванов И.И., Петров П.П.
Книга2 Иванов И.И.
Книга3 Иванов И.И., Петров П.П., Сидоров С.С.

Использовать ANSI SQL.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35354380
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполнять его планируется на ANSI СУБД? В таком случае, можно взять описание стандарта и посмотреть, какие в нем предусмотрены агрегатные функции для строк...
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35354887
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Durilka пишет:

> первая: КНИГИ(КодКниги, Название)
> вторая: АВТОРЫ(КодАвтора, ФИО)
> третья: АВТОРЫ_КНИГИ(КодКниги, КодАвтора) – эта таблица по сути
> реализует связь многие-ко-многим между таблицами КНИГИ и АВТОРЫ.
> Книга может иметь одного, двух и т.д. авторов,
> Любой автор может написать одну, две и более книг.
> Требуется написать SQL-запрос, который возвращал бы два столбца: первый
> – название книги, второй – авторы через запятую, например,

Такой запрос НЕ НУЖНО писать на SQL.
Результат запроса нарушает 1НФ
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355327
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычно такие вещи делаются рекурсивными запросами - это обычно дело.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355361
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТакой запрос НЕ НУЖНО писать на SQL.
Результат запроса нарушает 1НФ
Что-то Вы в последнее время сыпете оригинальными идеями....
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355382
Durilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточняю постановку задачи. Имеется таблица в которой пользователь хранит информацию о книгах:
КНИГИ(КодКниги, Название, Авторы)

Приведём, например, три строки из этой таблицы:
1 Книга1 Иванов И.И., Петров П.П.
2 Книга2 Иванов И.И.
3 Книга3 Иванов И.И., Петров П.П., Сидоров С.С.

Очевидно, что приведенная выше таблица не удовлетворяет определению 1НФ, т. к. третий столбец не является атомарным и содержит повторяющуюся группу атрибутов.

Для приведения к первой нормальной форме эта группа была выделена в отдельное отношение АВТОРЫ(КодАвтора, ФИО). В отношении КНИГИ остались атрибуты (КодКниги, Название). Между отношениями КНИГИ и АВТОРЫ существует связь многие-ко-многим. Для её разрешения было введено отношение АВТОРЫКНИГИ(КодКниги, КодАвтора).

В результате приведенные в таблице выше данные оказались в трёх нормализованных отношениях:

отношение КНИГИ(КодКниги, Название) содержит данные:
1 Книга1
2 Книга2
3 Книга3
Ключ этого отношения – атрибут КодКниги.

отношение АВТОРЫ(КодАвтора, ФИО) содержит данные:
1 Иванов И.И.
2 Петров П.П.
3 Сидоров С.С.
Ключ этого отношения – атрибут КодАвтора.


отношение АВТОРЫКНИГИ(КодКниги, КодАвтора) содержит данные:
1 1
1 2
2 1
3 1
3 2
3 3
Ключ этого отношения составной – атрибуты (КодКниги, КодАвтора).

Т.е. были построены три нормализованных отношения для хранения данных в базе данных. Но для отчёта пользователю нужно из этой базы данных извлечь данные соответствующие первоначальной таблице. Как используя SQL-92 получить такую таблицу из трёх нормализованных отношений?

Результат выполнения SQL-запроса может быть таблицей, не являющейся отношением (т.е. результат может не удовлетворять даже определению 1НФ). Вопрос в том, как пользуясь SQL-92 фактически восстановить ту ненормализованную таблицу, которая была изначально, так как именно она нужна пользователю.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355396
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman пишет:

> обычно такие вещи делаются рекурсивными запросами - это обычно дело.
Это-то здесь при чем ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355397
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Durilka пишет:

> Использовать ANSI SQL.
кстати, вы должны понимать, что "ANSI SQL" и "будет работать на любой СУБД,
поддерживающей ANSI SQL" -- это далеко не одно и то же.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355401
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:

> Что-то Вы в последнее время сыпете оригинальными идеями....

А мне в последнее время очень надоело объяснять людям, что белое -
это белое, а чёрное - это чёрное. И надоело тратить свое время
на объяснение элементарных вещей людям, их не понимающим.
Отсюда и краткость формы, и видимая категоричность заявления.
Но вместе с тем, надеюсь, мысль должна быть понятна.

Если вы хотите со мной поспорить о том, надо ли что-то в наборах
данных выводить через запятую, я от спора уклонюсь, ей богу.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355413
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Durilka пишет:

Вы все хорошо сделали, сделайте и еще лучше. ...

Но для отчёта пользователю нужно из этой базы данных
> извлечь данные соответствующие первоначальной таблице. Как используя
> SQL-92 получить такую таблицу из трёх нормализованных отношений?

Это надо делать на клиенте. В отчетниках например очень легко
сделать из подряд идущий записей одной книги группу, в заголовке
которой выводить все атрибуты книги, а в detail-е группы - авторов,
по одному на строке. Или применять контатенирующие группирующие функции.
В некоторых средствах вообще не проблема вывести это вместе, как, например, в
XML/XSLT это очень просто делается.

> Вопрос в том, как пользуясь SQL-92 фактически восстановить ту
> ненормализованную таблицу, которая была изначально, так как именно она
> нужна пользователю.

Это - очень общирный вопрос, очень часто обсуждаемый во всяких фомумах,
FAQ и так далее. в частности можете посмотреть это :

http://www.sql.ru/faq/faq_topic.aspx?fid=130

http://www.sqlserverfaq.com/controls/kbase/store/neilfaq/crosstab.txt

Или поищите сами что-то типа field concatenate или crosstab in SQL.

вы найдете кучу решений и с десяток вариантов, каждый из которых
имеет свою особенность и т.п. Плюс помножте это на кол-во основных
СУБД. Но не один из них не будет универсальным и подходящим во всех
случаях жизни. Потому что эта задача на SQL в общем виде не решается.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355426
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто надо делать на клиенте. В отчетниках например очень легко сделать из подряд идущий записей одной книги группу,
.. побочным эффектом будет удесятерение количества "почти одинаковых строк", выкачиваемых с сервера, ну или джойн тоже будем делать на клиенте.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355805
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DurilkaПомогите написать SQL-запрос в следующей ситуации:
...
Использовать ANSI SQL.
...
Как используя SQL-92 ...
Чисто ради интереса, безотносительно данного запроса - а почему ANSI SQL 92?
В частности, как вы собираетесь проверять, что это строго ANSI SQL 92?
Уже много лет никто не занимается проверкой реальных СУБД на их соответсвие стандарту-
все на совести производителей.

2 MasterZiv
>Результат запроса нарушает 1НФ
Это несомненно сгоряча....
Но на всякий случай - где запросы и где проблемы обновления, с которыми НФ воюют.

2 softwarer
Действительно есть идея как агрегировать строки в рамках ANSI SQL 92?
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355825
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRДействительно есть идея как агрегировать строки в рамках ANSI SQL 92?
Я предпочитаю руководствоваться идеей "настучать по голове тому, кто в силу дурацких соображений собирается ограничиться стандартом".
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35355977
нектотам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Такой запрос НЕ НУЖНО писать на SQL.
Результат запроса нарушает 1НФ

НФ определены на множествах отношений, а не для результатов SELECT. "SELECT a FROM b" в общем случае даже не отношение (т.к. значения a могут повторяться). И пользователи обычно хотят видеть не отношения, а отчеты.

ЗЫ: насколько я знаю, в чистом SQL-92 эта задача не решается.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35356093
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нектотам пишет:

> НФ определены на множествах отношений, а не для результатов SELECT.
> "SELECT a FROM b" в общем случае даже не отношение (т.к. значения a
> могут повторяться). И пользователи обычно хотят видеть не отношения, а
> отчеты.

Это верно, безусловно. Но язык SQL не предназначен для обработки
как таблиц, так и view и даже наборов данных, не находящихся в 1НФ.
Ну и, в частности, он не умеет их генерировать.
Есть только расширения конкретных СУБД, позволяющие это делать
(я знаю только group_concat в MySQL).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35356112
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:

> .. побочным эффектом будет удесятерение количества "почти одинаковых
> строк", выкачиваемых с сервера, ну или джойн тоже будем делать на клиенте.

да, будет.
но
0) Авторов у книги все же не миллион.
1) если их все же много, то они ни в какую строчку СУБД (поле набора
данных) не влезут. Врядли СУБД будет формировать это поле в виде
BLOB/CLOB.
2) если их все-таки очень много, их надо делать master/detail, да, на
клиенте, а как еще ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35356117
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто верно, безусловно. Но язык SQL не предназначен для обработки
как таблиц, так и view и даже наборов данных, не находящихся в 1НФ.И что, даже SELECT нельзя из такой таблицы сделать? :)

Вы, кажется, путаете "нормально обрабатывать" и "обрабатывать с извращениями".
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35356208
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Durilka
Видел решения этой задачи на различных платформах,
сложнее всего она решается в JET (MS Access).
Решения есть на форуме.
Если еще актуально - могу поискать и ткнуть носом:).
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35357089
Durilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexmsp2Durilka
Видел решения этой задачи на различных платформах,
сложнее всего она решается в JET (MS Access).
Решения есть на форуме.
Если еще актуально - могу поискать и ткнуть носом:).


Если действительно есть такое решение, то пожалуйста, не тыкайте меня носом :(, а просто оставьте ссылку :). Буду благодарен.

Суть вопроса в том, что если процесс нормализации преобразовал исходную таблицу в набор нормализованных отношений, то возможно ли получить исходную таблицу используя стандарт языка множеств и не пользуясь теми особенностями фактически процедурных языков, которые введены в SQL коммерческих СУБД.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35357153
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexmspЕсли еще актуально - могу поискать и ткнуть носом:).Поищите...
Желательно, чтобы там еще все было на ANSI SQL.
Есть большие сомнения, что сможете найти.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35359331
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
Желательно, чтобы там еще все было на ANSI SQL.


На ANSI SQL не знаю (не видел такой агрегатной ф-ции), а решения есть здесь:

http://www.sql.ru/faq/faq_topic.aspx?fid=130
/topic/481834&hl=%ef%ee%ea%e0%e6%e8%f2%e5#4771761
http://hiprog.com/index.php?option=com_content&task=view&id=334&Itemid=35
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35359642
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexmspНа ANSI SQL не знаю (не видел такой агрегатной ф-ции), а решения есть здесь:В том-то и дело, что на разных SQL серверах решения этой задачи есть, вот только все они ни разу не на ANSI SQL.

Поэтому согласен с
softwarerЯ предпочитаю руководствоваться идеей "настучать по голове тому, кто в силу дурацких соображений собирается ограничиться стандартом".
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35363109
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASA 9+
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select КНИГИ.Название,
list(АВТОРЫ.ФИО, ', ' order by АВТОРЫ.ФИО)
from КНИГИ,
АВТОРЫ,
АВТОРЫ_КНИГИ
where (КНИГИ.КодКниги = АВТОРЫ_КНИГИ.КодКниги) and
(АВТОРЫ.КодАвтора = АВТОРЫ_КНИГИ.КодАвтора)
group by КНИГИ.Название
Правда, к ANSI SQL это не имеет отношения, но кого волнует чужое горе .
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35363823
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000ASA 9+
Код: plaintext
1.
list(АВТОРЫ.ФИО, ', ' order by АВТОРЫ.ФИО)

Остальным серверам БД и джету надо с этого брать пример.
Весьма полезная агрегатная функция для отчетов.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #35366942
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROUP_CONCAT в MySQL - аналог list в ASA 9
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Связь многие ко многим и проблемы с выборкой на SQL
    #36613788
Alex MadP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм... А чем не подходит для практических целей на малых базах (< 10000 записей) запрос вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *
FROM `authors`
WHERE `id`
IN (

SELECT `shop_id`
FROM `author_to_books`
WHERE `author_id` = '1'
)

При этом производится подзапрос к таблице связей (ид_автора = ид_книги) и потом идёт выборка по пересечению множеств... Вполне себе работает на MySQL 5.+
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Связь многие ко многим и проблемы с выборкой на SQL
    #38585212
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос такой есть такая же модель данных авторы и книги связь многие ко многим .

как выбрать всех авторов которые не являются соавторами ни к одной из книг?
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585459
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
select АВТОРЫ.ФИО
  from АВТОРЫ left join АВТОРЫ_КНИГИ on АВТОРЫ.КодАвтора = АВТОРЫ_КНИГИ.КодАвтора
 where АВТОРЫ_КНИГИ.КодАвтора is null
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585481
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select A.*
from B-1-A
where (B-1-A)=1
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585491
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber
Код: sql
1.
2.
3.
select АВТОРЫ.ФИО
  from АВТОРЫ left join АВТОРЫ_КНИГИ on АВТОРЫ.КодАвтора = АВТОРЫ_КНИГИ.КодАвтора
 where АВТОРЫ_КНИГИ.КодАвтора is null


Это не соавторы. ТС, думай сам.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585561
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятинаselect A.*
from B-1-A
where (B-1-A)=1
Благодаря П-Л: это авторы, которые написали хотя бы одну книгу без соавторов. Пропустил "ни ко одной"(( Для этого схему нужно расширить:

select A.*
from B-1-A-1-B-1-A
where (B-1-A-1-B-1-A)=1
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585580
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаБредятинаselect A.*
from B-1-A
where (B-1-A)=1
Благодаря П-Л: это авторы, которые написали хотя бы одну книгу без соавторов. Пропустил "ни ко одной"(( Для этого схему нужно расширить:

select A.*
from B-1-A-1-B-1-A
where (B-1-A-1-B-1-A)=1
Естественнее, конечно:

select A.*
from A-1-B-1-A
where (A-1-B-1-A)=1
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585582
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаБредятинаselect A.*
from B-1-A
where (B-1-A)=1
Благодаря П-Л: это авторы, которые написали хотя бы одну книгу без соавторов. Пропустил "ни ко одной"(( Для этого схему нужно расширить:

select A.*
from B-1-A-1-B-1-A
where (B-1-A-1-B-1-A)=1

Я ничего не понял в этой терминологии... Бредятина какая-то.... ))))

почему не сделать стандартно:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select *
from authors a
where not exists (  select 1
                    from    authors_to_books ab
                    where   ab.author = a.author
                        and exists (select  1
                                    from    authors_to_books ab2
                                    where   ab.author <> ab2.author
                                        and ab.book = ab2.book)
                 )
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585594
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocustБредятинапропущено...

Благодаря П-Л: это авторы, которые написали хотя бы одну книгу без соавторов. Пропустил "ни ко одной"(( Для этого схему нужно расширить:

select A.*
from B-1-A-1-B-1-A
where (B-1-A-1-B-1-A)=1

Я ничего не понял в этой терминологии... Бредятина какая-то.... ))))

почему не сделать стандартно:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select *
from authors a
where not exists (  select 1
                    from    authors_to_books ab
                    where   ab.author = a.author
                        and exists (select  1
                                    from    authors_to_books ab2
                                    where   ab.author <> ab2.author
                                        and ab.book = ab2.book)
                 )


))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных. Ваш "стандартный вариант", конечно, хорош, но явно проигрывает еще более стандартному

Естественнее, конечно:

select A.*
from A-1-B-1-A
where (A-1-B-1-A)=1

В схеме БД два объекта Автор (A) и Книга (B). И связь между ними многие-ко-многим 1 (Написал/Написана).
Запрос делается к схеме Автор-Написал-Книга-Написана-Автор. Очевидно, что если для Автора в начале схемы получаем того же автора в конце, то это и есть нужный нам автор))) Зачем же писать так громоздко, как у Вас?
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585609
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных. Ваш "стандартный вариант", конечно, хорош, но явно проигрывает еще более стандартному

Естественнее, конечно:

select A.*
from A-1-B-1-A
where (A-1-B-1-A)=1

В схеме БД два объекта Автор (A) и Книга (B). И связь между ними многие-ко-многим 1 (Написал/Написана).
Запрос делается к схеме Автор-Написал-Книга-Написана-Автор. Очевидно, что если для Автора в начале схемы получаем того же автора в конце, то это и есть нужный нам автор))) Зачем же писать так громоздко, как у Вас?
[/quote]

Аааа )))

Просто иной раз понять ansi запрос проще чем связь (A-1-B-1-A)=1.
Тем более что связей (A-1-B-1-A) (где Автор в начале и Автор в конце один для одной и той же книги просто не может быль больше 1 даже в теории, а для разных книг не совсем понятно как это учтено...)

без sql я бы как-то так описал:
все авторы (у которых нет книг (у которых есть другой автор)). Фактически аналог sql`я но понять сложнее.....
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38585731
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных.
Простите, не слежу за всеми темами. Не дадите ссылочку, где это "здесь"?
Я полагал и полагая, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных...
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586001
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocustАааа )))

Просто иной раз понять ansi запрос проще чем связь (A-1-B-1-A)=1.
Тем более что связей (A-1-B-1-A) (где Автор в начале и Автор в конце один для одной и той же книги просто не может быль больше 1 даже в теории, а для разных книг не совсем понятно как это учтено...)

без sql я бы как-то так описал:
все авторы (у которых нет книг (у которых есть другой автор)). Фактически аналог sql`я но понять сложнее.....
Что же непонятного)) Ведь у Автора много книг, и если хотя бы у одной из них есть еще один автор, то мы получим двух авторов для данного автора в этой схеме БД)))
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586010
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойБредятина))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных.
Простите, не слежу за всеми темами. Не дадите ссылочку, где это "здесь"?
Я полагал и полагая, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных...
http://www.sql.ru/forum/1081429/kak-izbezhat-mnozhestva-znacheniy-v-odnoy-yacheyke
Из Вашего текста следует, что реляционная база данных - не база данных))) Мне кажется, что этот подфорум (раз его не переименовывают в "Проектирование реляционных баз данных") посвящен именно проектированию баз данных. То есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586022
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаlLocustАааа )))

Просто иной раз понять ansi запрос проще чем связь (A-1-B-1-A)=1.
Тем более что связей (A-1-B-1-A) (где Автор в начале и Автор в конце один для одной и той же книги просто не может быль больше 1 даже в теории, а для разных книг не совсем понятно как это учтено...)

без sql я бы как-то так описал:
все авторы (у которых нет книг (у которых есть другой автор)). Фактически аналог sql`я но понять сложнее.....
Что же непонятного)) Ведь у Автора много книг, и если хотя бы у одной из них есть еще один автор, то мы получим двух авторов для данного автора в этой схеме БД)))
(схема) - это сокращенный синтаксис - значение системного атрибута Количество привязанных.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586043
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-Лrockclimber
Код: sql
1.
2.
3.
select АВТОРЫ.ФИО
  from АВТОРЫ left join АВТОРЫ_КНИГИ on АВТОРЫ.КодАвтора = АВТОРЫ_КНИГИ.КодАвтора
 where АВТОРЫ_КНИГИ.КодАвтора is null


Это не соавторы. ТС, думай сам.Точно. Тогда решение даже проще.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586045
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimberП-Лпропущено...

Это не соавторы. ТС, думай сам.Точно. Тогда решение даже проще.
Намного)))
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586121
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DurilkaТребуется написать SQL-запрос, который возвращал бы два столбца: первый – название книги, второй – авторы через запятую, например,


Такой запрос писать не надо. Это антиреляционный запрос.

Надо писать другой -- набор (Книга.Название, Автор.ИмяФамилия), упорядоченный по книгам.
Затем на клиенте можно будет соорудить список авторов через запятую из последовательно идущих строк об одной книге.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586123
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, кто опять эту хрень поднял?
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586138
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаАнатоЛойпропущено...

Простите, не слежу за всеми темами. Не дадите ссылочку, где это "здесь"?
Я полагал и полагаю, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных...
http://www.sql.ru/forum/1081429/kak-izbezhat-mnozhestva-znacheniy-v-odnoy-yacheyke
Из Вашего текста следует, что реляционная база данных - не база данных)))

Не следует. Поскольку вывод неоднозначен. Поскольку достаточно уточнить: "Я полагал и полагаю, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных, поскольку реляционные базы данных тоже можно называть базами данных..."

БредятинаМне кажется, что этот подфорум (раз его не переименовывают в "Проектирование реляционных баз данных") посвящен именно проектированию баз данных.

Я ничего не имею против этой позиции. Я считаю, что тематика "Проектирование реляционных баз данных" практически подмножество для тематики "Проектирование баз данных".

БредятинаТо есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД.
Непонятно, откуда появился предикат "каждый" в вашем логичном, вроде бы, выводе.
По идее, название и содержание темы - подмножество из области обсуждений, связанных с общей тематикой форума.
И если в название темы присутствует "SQL", то это "как-бы намекает", что речь в теме идёт, в-первую очередь, всё-таки о реляционных базах данных :). Где я ошибаюсь?
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586198
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойБредятинапропущено...

http://www.sql.ru/forum/1081429/kak-izbezhat-mnozhestva-znacheniy-v-odnoy-yacheyke
Из Вашего текста следует, что реляционная база данных - не база данных)))

Не следует. Поскольку вывод неоднозначен. Поскольку достаточно уточнить: "Я полагал и полагаю, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных, поскольку реляционные базы данных тоже можно называть базами данных..."

БредятинаМне кажется, что этот подфорум (раз его не переименовывают в "Проектирование реляционных баз данных") посвящен именно проектированию баз данных.

Я ничего не имею против этой позиции. Я считаю, что тематика "Проектирование реляционных баз данных" практически подмножество для тематики "Проектирование баз данных".

БредятинаТо есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД.
Непонятно, откуда появился предикат "каждый" в вашем логичном, вроде бы, выводе.
По идее, название и содержание темы - подмножество из области обсуждений, связанных с общей тематикой форума.
И если в название темы присутствует "SQL", то это "как-бы намекает", что речь в теме идёт, в-первую очередь, всё-таки о реляционных базах данных :). Где я ошибаюсь?
Вы не ошибаетесь. А просто своим "в первую очередь" подтвердили мое "в каждой"))
Вот, например, тема: "Связь многие ко многим и проблемы с выборкой на SQL".
1) В реляционных БД в принципе нет никаких связей, а есть ограничения целостности.
2) Судя по заголовку, есть проблемы))
3) Структурированный язык не противоречит никаким МД...
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586218
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаАнатоЛойБредятинаТо есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД.
Непонятно, откуда появился предикат "каждый" в вашем логичном, вроде бы, выводе.

По идее, название и содержание темы - подмножество из области обсуждений, связанных с общей тематикой форума.
И если в название темы присутствует "SQL", то это "как-бы намекает", что речь в теме идёт, в-первую очередь, всё-таки о реляционных базах данных :). Где я ошибаюсь?

Вы не ошибаетесь. А просто своим "в первую очередь" подтвердили мое "в каждой")).


Хм. Я понял что меня на самом деле зацепило. "Следует" - это ваш лозунг, применительно к публике эту фразу корректнее было бы строить с использованием предиката "можно"... :).
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586247
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1вопрос такой есть такая же модель данных авторы и книги связь многие ко многим .

как выбрать всех авторов которые не являются соавторами ни к одной из книг?
Ну чем же в Вашей модели отличаются соавторы от авторов? Связь многие ко многим предполагает, что все авторы книг. Например, в этой связи могло бы быть свойство: Авторство: Автор, Соавтор.
...
Рейтинг: 0 / 0
Связь многие ко многим и проблемы с выборкой на SQL
    #38586258
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойХм. Я понял что меня на самом деле зацепило. "Следует" - это ваш лозунг, применительно к публике эту фразу корректнее было бы строить с использованием предиката "можно"... :).
Да.
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие ко многим и проблемы с выборкой на SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]