Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связи и исключения 
V
    Опции темы
Defiline
Дата 18.8.2011, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.7.2011

Репутация: нет
Всего: нет



Ночь ... холодно ... еле думается.

Есть три таблицы (классическая связь many-to-many):

books
Код

id   |   name
 1   |   Книга 1
 2   |   Книга 2


authors
Код

id   |   name
 1   |   Саша
 2   |   Маша
 3   |   Даша
 4   |   Каша


authors_books
Код

author_id  |  book_id
  1             |       1
  1             |       2
  1             |       4
  2             |       1


Т.е. книгу 1 писали Саша,  Маша и Каша.
Я составляю запрос, который "жадно" выбирает:

Код

Книга 1     |    Саша
Книга 1     |    Маша
Книга 1     |    Каша
Книга 2     |    Саша


Проблема:
Нужно выбрать только те книги, которые написала Саша. В результате так же должны присутствовать все авторы это книги (результат, по внешнему виду, ничем не должен отличаться от примера выше. Разница лишь в том, что если я хочу выбрать книги, которые писала Маша, то получу:

Код

Книга 1     |    Саша
Книга 1     |    Маша
Книга 1     |    Каша


Проблема всегда в том, что выбирает сейчас так:
Код

Книга 1     |    Маша


Т.е. все другие авторы теряются.
PM MAIL   Вверх
sir_nuf_nuf
Дата 18.8.2011, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 8
Всего: 31



Код

select b.name, a.name 
from books b 
inner join authors_books ab on b.id = ab.book_id 
inner join authors a on ab.author_id = a.id
where b.id in  (
  select b.id 
  from books b 
  inner join authors_books ab on b.id = ab.book_id 
  inner join authors a on ab.author_id = a.id 
  where a.name = 'Маша'
) T;



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
Defiline
Дата 18.8.2011, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.7.2011

Репутация: нет
Всего: нет



Пасиба, it works!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.