|
|
|
Связь многие ко многим и проблемы с выборкой на 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?fid=32&msg=38586218&tid=1540955]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 299ms |

| 0 / 0 |

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