MySQL: положить все значения 1: m в одно поле? - PullRequest
1 голос
/ 22 ноября 2011

Допустим, следующие возможные модели:

Модель 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.

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Посмотрите на функцию GROUP_CONCAT.

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

0 голосов
/ 22 ноября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...