Находить значение в текстовом поле, разделенном запятыми, в MySQL? - PullRequest
1 голос
/ 20 августа 2011

У меня есть база данных игр с жанровым полем, в котором есть уникальные идентификаторы, разделенные запятыми. Это текстовое поле. Например: HALO 2 - cat_genre => '1,2' (Action,Sci-Fi)

Я пытаюсь создать функцию, которая рассчитывает общее количество игр в этом жанре. Таким образом, это соответствует 1 значение нескольким значениям, разделенным запятыми в БД.

Я использовал SELECT * FROM gh_game WHERE cat_genre IN (1), что бы найти Экшн-игры.

Я пытаюсь решить это, я думал, что однажды прибил это, но я просто не могу понять.

1 Ответ

1 голос
/ 20 августа 2011

Вам нужно создать отношение многие ко многим.например

CREATE TABLE gameGenreTable ( id int NOT NULL PRIMARY KEY, genreID, gameID)

РЕДАКТИРОВАТЬ: если вы используете InnoDB, вы также можете создавать внешние ключи для genreID и gameID. Я бы добавил уникальный ключ для genreID, gameID

, тогда вывыполните запрос, подобный этому

SELECT genreID,count(genreID) as count from gameGenreTable GROUP BY genreID;

- и присоединитесь к другой таблице, чтобы получить название жанра (или просто используйте идентификатор).

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