|
|
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Помогите написать SQL-запрос в следующей ситуации: Есть три таблицы: первая: КНИГИ(КодКниги, Название) вторая: АВТОРЫ(КодАвтора, ФИО) третья: АВТОРЫ_КНИГИ(КодКниги, КодАвтора) – эта таблица по сути реализует связь многие-ко-многим между таблицами КНИГИ и АВТОРЫ. Книга может иметь одного, двух и т.д. авторов, Любой автор может написать одну, две и более книг. Требуется написать SQL-запрос, который возвращал бы два столбца: первый – название книги, второй – авторы через запятую, например, Книга1 Иванов И.И., Петров П.П. Книга2 Иванов И.И. Книга3 Иванов И.И., Петров П.П., Сидоров С.С. Использовать ANSI SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 15:37 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Выполнять его планируется на ANSI СУБД? В таком случае, можно взять описание стандарта и посмотреть, какие в нем предусмотрены агрегатные функции для строк... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 15:44 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Durilka пишет: > первая: КНИГИ(КодКниги, Название) > вторая: АВТОРЫ(КодАвтора, ФИО) > третья: АВТОРЫ_КНИГИ(КодКниги, КодАвтора) – эта таблица по сути > реализует связь многие-ко-многим между таблицами КНИГИ и АВТОРЫ. > Книга может иметь одного, двух и т.д. авторов, > Любой автор может написать одну, две и более книг. > Требуется написать SQL-запрос, который возвращал бы два столбца: первый > – название книги, второй – авторы через запятую, например, Такой запрос НЕ НУЖНО писать на SQL. Результат запроса нарушает 1НФ Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 18:18 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
обычно такие вещи делаются рекурсивными запросами - это обычно дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 23:35 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
MasterZivТакой запрос НЕ НУЖНО писать на SQL. Результат запроса нарушает 1НФ Что-то Вы в последнее время сыпете оригинальными идеями.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 00:15 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Уточняю постановку задачи. Имеется таблица в которой пользователь хранит информацию о книгах: КНИГИ(КодКниги, Название, Авторы) Приведём, например, три строки из этой таблицы: 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 фактически восстановить ту ненормализованную таблицу, которая была изначально, так как именно она нужна пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 00:39 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
gardenman пишет: > обычно такие вещи делаются рекурсивными запросами - это обычно дело. Это-то здесь при чем ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 00:57 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Durilka пишет: > Использовать ANSI SQL. кстати, вы должны понимать, что "ANSI SQL" и "будет работать на любой СУБД, поддерживающей ANSI SQL" -- это далеко не одно и то же. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 00:58 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > Что-то Вы в последнее время сыпете оригинальными идеями.... А мне в последнее время очень надоело объяснять людям, что белое - это белое, а чёрное - это чёрное. И надоело тратить свое время на объяснение элементарных вещей людям, их не понимающим. Отсюда и краткость формы, и видимая категоричность заявления. Но вместе с тем, надеюсь, мысль должна быть понятна. Если вы хотите со мной поспорить о том, надо ли что-то в наборах данных выводить через запятую, я от спора уклонюсь, ей богу. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 01:03 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 01:21 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто надо делать на клиенте. В отчетниках например очень легко сделать из подряд идущий записей одной книги группу, .. побочным эффектом будет удесятерение количества "почти одинаковых строк", выкачиваемых с сервера, ну или джойн тоже будем делать на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 01:56 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
DurilkaПомогите написать SQL-запрос в следующей ситуации: ... Использовать ANSI SQL. ... Как используя SQL-92 ... Чисто ради интереса, безотносительно данного запроса - а почему ANSI SQL 92? В частности, как вы собираетесь проверять, что это строго ANSI SQL 92? Уже много лет никто не занимается проверкой реальных СУБД на их соответсвие стандарту- все на совести производителей. 2 MasterZiv >Результат запроса нарушает 1НФ Это несомненно сгоряча.... Но на всякий случай - где запросы и где проблемы обновления, с которыми НФ воюют. 2 softwarer Действительно есть идея как агрегировать строки в рамках ANSI SQL 92? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 10:35 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
ModelRДействительно есть идея как агрегировать строки в рамках ANSI SQL 92? Я предпочитаю руководствоваться идеей "настучать по голове тому, кто в силу дурацких соображений собирается ограничиться стандартом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 10:40 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv Такой запрос НЕ НУЖНО писать на SQL. Результат запроса нарушает 1НФ НФ определены на множествах отношений, а не для результатов SELECT. "SELECT a FROM b" в общем случае даже не отношение (т.к. значения a могут повторяться). И пользователи обычно хотят видеть не отношения, а отчеты. ЗЫ: насколько я знаю, в чистом SQL-92 эта задача не решается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 11:38 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
нектотам пишет: > НФ определены на множествах отношений, а не для результатов SELECT. > "SELECT a FROM b" в общем случае даже не отношение (т.к. значения a > могут повторяться). И пользователи обычно хотят видеть не отношения, а > отчеты. Это верно, безусловно. Но язык SQL не предназначен для обработки как таблиц, так и view и даже наборов данных, не находящихся в 1НФ. Ну и, в частности, он не умеет их генерировать. Есть только расширения конкретных СУБД, позволяющие это делать (я знаю только group_concat в MySQL). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 12:06 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > .. побочным эффектом будет удесятерение количества "почти одинаковых > строк", выкачиваемых с сервера, ну или джойн тоже будем делать на клиенте. да, будет. но 0) Авторов у книги все же не миллион. 1) если их все же много, то они ни в какую строчку СУБД (поле набора данных) не влезут. Врядли СУБД будет формировать это поле в виде BLOB/CLOB. 2) если их все-таки очень много, их надо делать master/detail, да, на клиенте, а как еще ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 12:09 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто верно, безусловно. Но язык SQL не предназначен для обработки как таблиц, так и view и даже наборов данных, не находящихся в 1НФ.И что, даже SELECT нельзя из такой таблицы сделать? :) Вы, кажется, путаете "нормально обрабатывать" и "обрабатывать с извращениями". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 12:10 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
2Durilka Видел решения этой задачи на различных платформах, сложнее всего она решается в JET (MS Access). Решения есть на форуме. Если еще актуально - могу поискать и ткнуть носом:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 12:32 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
alexmsp2Durilka Видел решения этой задачи на различных платформах, сложнее всего она решается в JET (MS Access). Решения есть на форуме. Если еще актуально - могу поискать и ткнуть носом:). Если действительно есть такое решение, то пожалуйста, не тыкайте меня носом :(, а просто оставьте ссылку :). Буду благодарен. Суть вопроса в том, что если процесс нормализации преобразовал исходную таблицу в набор нормализованных отношений, то возможно ли получить исходную таблицу используя стандарт языка множеств и не пользуясь теми особенностями фактически процедурных языков, которые введены в SQL коммерческих СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 15:48 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
alexmspЕсли еще актуально - могу поискать и ткнуть носом:).Поищите... Желательно, чтобы там еще все было на ANSI SQL. Есть большие сомнения, что сможете найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 16:05 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 13:49 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
alexmspНа ANSI SQL не знаю (не видел такой агрегатной ф-ции), а решения есть здесь:В том-то и дело, что на разных SQL серверах решения этой задачи есть, вот только все они ни разу не на ANSI SQL. Поэтому согласен с softwarerЯ предпочитаю руководствоваться идеей "настучать по голове тому, кто в силу дурацких соображений собирается ограничиться стандартом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 15:03 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
ASA 9+ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ____________________________________ - Гарфилд, мышь! - Спасибо, я сыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2008, 16:24 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Dim2000ASA 9+ Код: plaintext 1. Остальным серверам БД и джету надо с этого брать пример. Весьма полезная агрегатная функция для отчетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 11:09 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
GROUP_CONCAT в MySQL - аналог list в ASA 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 13:40 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Хм... А чем не подходит для практических целей на малых базах (< 10000 записей) запрос вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. При этом производится подзапрос к таблице связей (ид_автора = ид_книги) и потом идёт выборка по пересечению множеств... Вполне себе работает на MySQL 5.+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 19:18 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
вопрос такой есть такая же модель данных авторы и книги связь многие ко многим . как выбрать всех авторов которые не являются соавторами ни к одной из книг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 14:34 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:04 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
select A.* from B-1-A where (B-1-A)=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:17 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
rockclimber Код: sql 1. 2. 3. Это не соавторы. ТС, думай сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:23 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Бредятина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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 18:07 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
БредятинаБредятина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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 18:23 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
БредятинаБредятина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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 18:23 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
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 A.* from A-1-B-1-A where (A-1-B-1-A)=1 В схеме БД два объекта Автор (A) и Книга (B). И связь между ними многие-ко-многим 1 (Написал/Написана). Запрос делается к схеме Автор-Написал-Книга-Написана-Автор. Очевидно, что если для Автора в начале схемы получаем того же автора в конце, то это и есть нужный нам автор))) Зачем же писать так громоздко, как у Вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 18:32 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
автор))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных. Ваш "стандартный вариант", конечно, хорош, но явно проигрывает еще более стандартному Естественнее, конечно: 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`я но понять сложнее..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 18:52 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Бредятина))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных. Простите, не слежу за всеми темами. Не дадите ссылочку, где это "здесь"? Я полагал и полагая, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 22:36 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
lLocustАааа ))) Просто иной раз понять ansi запрос проще чем связь (A-1-B-1-A)=1. Тем более что связей (A-1-B-1-A) (где Автор в начале и Автор в конце один для одной и той же книги просто не может быль больше 1 даже в теории, а для разных книг не совсем понятно как это учтено...) без sql я бы как-то так описал: все авторы (у которых нет книг (у которых есть другой автор)). Фактически аналог sql`я но понять сложнее..... Что же непонятного)) Ведь у Автора много книг, и если хотя бы у одной из них есть еще один автор, то мы получим двух авторов для данного автора в этой схеме БД))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:09 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
АнатоЛойБредятина))) Мы здесь, кажется, договорились, что речь в этом подфоруме идет о проектировании баз данных, а не о проектировании реляционных баз данных. Простите, не слежу за всеми темами. Не дадите ссылочку, где это "здесь"? Я полагал и полагая, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных... http://www.sql.ru/forum/1081429/kak-izbezhat-mnozhestva-znacheniy-v-odnoy-yacheyke Из Вашего текста следует, что реляционная база данных - не база данных))) Мне кажется, что этот подфорум (раз его не переименовывают в "Проектирование реляционных баз данных") посвящен именно проектированию баз данных. То есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:14 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
БредятинаlLocustАааа ))) Просто иной раз понять ansi запрос проще чем связь (A-1-B-1-A)=1. Тем более что связей (A-1-B-1-A) (где Автор в начале и Автор в конце один для одной и той же книги просто не может быль больше 1 даже в теории, а для разных книг не совсем понятно как это учтено...) без sql я бы как-то так описал: все авторы (у которых нет книг (у которых есть другой автор)). Фактически аналог sql`я но понять сложнее..... Что же непонятного)) Ведь у Автора много книг, и если хотя бы у одной из них есть еще один автор, то мы получим двух авторов для данного автора в этой схеме БД))) (схема) - это сокращенный синтаксис - значение системного атрибута Количество привязанных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:24 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
П-Лrockclimber Код: sql 1. 2. 3. Это не соавторы. ТС, думай сам.Точно. Тогда решение даже проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:36 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
rockclimberП-Лпропущено... Это не соавторы. ТС, думай сам.Точно. Тогда решение даже проще. Намного))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:38 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
DurilkaТребуется написать SQL-запрос, который возвращал бы два столбца: первый – название книги, второй – авторы через запятую, например, Такой запрос писать не надо. Это антиреляционный запрос. Надо писать другой -- набор (Книга.Название, Автор.ИмяФамилия), упорядоченный по книгам. Затем на клиенте можно будет соорудить список авторов через запятую из последовательно идущих строк об одной книге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 12:20 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Блин, кто опять эту хрень поднял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 12:21 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
БредятинаАнатоЛойпропущено... Простите, не слежу за всеми темами. Не дадите ссылочку, где это "здесь"? Я полагал и полагаю, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных... http://www.sql.ru/forum/1081429/kak-izbezhat-mnozhestva-znacheniy-v-odnoy-yacheyke Из Вашего текста следует, что реляционная база данных - не база данных))) Не следует. Поскольку вывод неоднозначен. Поскольку достаточно уточнить: "Я полагал и полагаю, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных, поскольку реляционные базы данных тоже можно называть базами данных..." БредятинаМне кажется, что этот подфорум (раз его не переименовывают в "Проектирование реляционных баз данных") посвящен именно проектированию баз данных. Я ничего не имею против этой позиции. Я считаю, что тематика "Проектирование реляционных баз данных" практически подмножество для тематики "Проектирование баз данных". БредятинаТо есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД. Непонятно, откуда появился предикат "каждый" в вашем логичном, вроде бы, выводе. По идее, название и содержание темы - подмножество из области обсуждений, связанных с общей тематикой форума. И если в название темы присутствует "SQL", то это "как-бы намекает", что речь в теме идёт, в-первую очередь, всё-таки о реляционных базах данных :). Где я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 12:30 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
АнатоЛойБредятинапропущено... http://www.sql.ru/forum/1081429/kak-izbezhat-mnozhestva-znacheniy-v-odnoy-yacheyke Из Вашего текста следует, что реляционная база данных - не база данных))) Не следует. Поскольку вывод неоднозначен. Поскольку достаточно уточнить: "Я полагал и полагаю, что в этом форуме речь идёт как о проектировании баз данных, так и о проектировании реляционных баз данных, поскольку реляционные базы данных тоже можно называть базами данных..." БредятинаМне кажется, что этот подфорум (раз его не переименовывают в "Проектирование реляционных баз данных") посвящен именно проектированию баз данных. Я ничего не имею против этой позиции. Я считаю, что тематика "Проектирование реляционных баз данных" практически подмножество для тематики "Проектирование баз данных". БредятинаТо есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД. Непонятно, откуда появился предикат "каждый" в вашем логичном, вроде бы, выводе. По идее, название и содержание темы - подмножество из области обсуждений, связанных с общей тематикой форума. И если в название темы присутствует "SQL", то это "как-бы намекает", что речь в теме идёт, в-первую очередь, всё-таки о реляционных базах данных :). Где я ошибаюсь? Вы не ошибаетесь. А просто своим "в первую очередь" подтвердили мое "в каждой")) Вот, например, тема: "Связь многие ко многим и проблемы с выборкой на SQL". 1) В реляционных БД в принципе нет никаких связей, а есть ограничения целостности. 2) Судя по заголовку, есть проблемы)) 3) Структурированный язык не противоречит никаким МД... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:12 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
БредятинаАнатоЛойБредятинаТо есть, в каждой теме следует рассматривать альтернативные решения с использованием различных МД. Непонятно, откуда появился предикат "каждый" в вашем логичном, вроде бы, выводе. По идее, название и содержание темы - подмножество из области обсуждений, связанных с общей тематикой форума. И если в название темы присутствует "SQL", то это "как-бы намекает", что речь в теме идёт, в-первую очередь, всё-таки о реляционных базах данных :). Где я ошибаюсь? Вы не ошибаетесь. А просто своим "в первую очередь" подтвердили мое "в каждой")). Хм. Я понял что меня на самом деле зацепило. "Следует" - это ваш лозунг, применительно к публике эту фразу корректнее было бы строить с использованием предиката "можно"... :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:24 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
Atum1вопрос такой есть такая же модель данных авторы и книги связь многие ко многим . как выбрать всех авторов которые не являются соавторами ни к одной из книг? Ну чем же в Вашей модели отличаются соавторы от авторов? Связь многие ко многим предполагает, что все авторы книг. Например, в этой связи могло бы быть свойство: Авторство: Автор, Соавтор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:40 |
|
||
|
Связь многие ко многим и проблемы с выборкой на SQL
|
|||
|---|---|---|---|
|
#18+
АнатоЛойХм. Я понял что меня на самом деле зацепило. "Следует" - это ваш лозунг, применительно к публике эту фразу корректнее было бы строить с использованием предиката "можно"... :). Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1540955]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 308ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...