MySQL: поместить все значения 1: м в одно поле?

Предположим следующие возможные модели:

Модель 1:

TABLE: book
- book_id
- name

TABLE: book_author
- book_author_id
- book_id
- author_id

TABLE: author
- author_id
- name

(у книги может быть 0 и более авторов)

Модель 2:

TABLE: book
- book_id
- name

TABLE: book_eav
- book_eav_id
- book_id
- attribute (e.g. "author")
- value (e.g. "Tom Clancy")

(у книги может быть 0 и более авторов + информация об издателе, количестве страниц и т.д.)

Как запросить это таким образом, чтобы получить обратно book.book_id, book.name + поле authors, содержащее 0 или более значений, связанных с книгой?

Я пытаюсь сделать это, чтобы использовать результаты запроса в качестве документов в индексе Lucene.


person StackOverflowNewbie    schedule 21.11.2011    source источник


Ответы (2)


Lucene поддерживает несколько полей с одинаковыми именами, что означает, что вы можете хранить несколько полей с именами «Автор» в одном и том же документе.

Я предлагаю вам сделать это и получить дополнительные данные с помощью другого оператора, например:

один выберите для книг. один выбор для book_id и автора.

person jishi    schedule 22.11.2011

Взгляните на функцию GROUP_CONCAT.

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

person Memochipan    schedule 21.11.2011