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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор из таблиц с соотношением M M (mysql) 
:(
    Опции темы
taral
Дата 9.2.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Разговор идет про базу данных mysql
Есть 2 таблици. Для удобства:
Книга и Автор.
Они относятся одна к другой как много к многому.
Одну книгу могут писать несколько авторов и наоборот, один автор может написать много книг.
Поэтому мне пришлось ввести промежуточную таблицу в которой хранятся id таблиц Автор и Книга.
Поиск осуществляется по названию книги.
С поиском проблем никаких не возникло. Но есть одна плохая особенность.
Если одну книгу написало несколько авторов то выводится это как 2 разных записи.
А я хочу сделать чтобы Выводилось название книги и авторы через запятую.
Средствами PHP решить у меня не вышло поскольку вывод происходит с LIMIT.
Подскажите решение. Спасибо за внимание.
PM MAIL   Вверх
skyboy
Дата 9.2.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



во-первых, задача решаема абсолютно на стороне СУБД средствами SQL. Едем в "MYSQL"
во-вторых, запрос, нужный тебе, сформировать несложно. но полезнее будет разобраться, почему не работает "как надо" твой запрос. Только вот где он? Что ж так - "помогите разобраться", а с чем разбираться - секрет. Нелогично.
PM MAIL   Вверх
taral
Дата 9.2.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



SELECT book.name, autor.name FROM news, autor, entity WHERE book.book_id=entity.book_id, autor.autor_id=entity.autor_id, autor.autor_id=$i LIMIT 10, 10
Ну например такой.
PM MAIL   Вверх
Golda
Дата 10.2.2008, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



Вот запрос, который вернет согласованные записи

Код

SELECT b.name, auth.name
FROM (
   SELECT book_id, name
   FROM book
   LIMIT 10 , 10
) AS b
INNER JOIN entity AS en ON b.book_id = en.book_id
INNER JOIN author AS auth ON auth.author_id = en.author_id


Добавлено через 13 минут и 27 секунд
Это для полного списка было. Если есть условие на автора, учитываем его во внутреннем запросе

Код

SELECT b.name, auth.name
FROM (
  SELECT b1.book_id, b1.name
  FROM book AS b1
  INNER JOIN entity AS en1 ON b1.book_id = en1.book_id
  WHERE en1.author_id = 5  
  GROUP BY b1.book_id, b1.name
  LIMIT 10, 10
) AS b
INNER JOIN entity AS en ON b.book_id = en.book_id
INNER JOIN author AS auth ON auth.author_id = en.author_id  



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
taral
Дата 10.2.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Golda эх сколько раз мне уже стоило нажать + возле твоей репутации. Как жаль что не могу на данный момент(
Огромное спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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