powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие ко многим и проблемы с выборкой на SQL
23 сообщений из 48, страница 2 из 2
Период между сообщениями больше года.
Связь многие ко многим и проблемы с выборкой на 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
23 сообщений из 48, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие ко многим и проблемы с выборкой на SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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