Как посчитать значение из массива JSON - PullRequest
0 голосов
/ 28 марта 2019

В моей базе данных есть следующие данные.

id     title               genre_id
1      Khiladi               ["5"]
2      Sanam              ["2","5","20"]
3      Raaz                 ["10"]

Теперь я хочу посчитать совпадение genre_id, например, 5 = 2, 10 = 1, я получаю нормальные значения результата, а не JSON.

предположим $genre_id =5;, затем, следуя, я получаю 1, но результат желаний 2

$this->db->where('genre_id' , $genre_id);

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Ваши данные - это то, что называется отношением «многие ко многим».У вас есть список названий и список жанров, и вам нужно знать, как они связаны друг с другом.Хотя ваш дизайн очень быстр для ответа на вопрос «какие жанры относятся к названию« Sanam »?»ему очень трудно ответить на другой вопрос: какие названия в жанре 5?Как вы уже обнаружили.

Обычно в реляционной базе данных, такой как MySQL, отношения «многие ко многим» представлены с использованием трех таблиц.Я дам вам очень краткое введение здесь, но если вы будете искать «MySQL многие-ко-многим», вы найдете множество информации, некоторые написаны для начинающих.

Ваши таблицы могут выглядеть примерно так:

#Table Titles
id  |  title
--------------
1   | Khiladi
2   | Sanam
3   | Raaz

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

У вас была бы похожая таблица дляжанры:

#Table Genres
id  |  title
--------------
1   | Action
2   | Comedy
3   | Romance

Итак, как вы узнаете, какие жанры и с какими названиями?Вы создаете третью таблицу, которая является строкой для каждого ОТНОШЕНИЯ.

#Table Title_has_Genre
title_id  | genre_id
----------------------
1         | 5
2         | 2
2         | 5
2         | 10

и т. Д.

Теперь вы можете легко получить идентификаторы всех названий жанра 5 ивы также можете получить идентификаторы всех жанров, связанных с заголовком.

Как правило, вы будете использовать синтаксис JOIN в своих запросах, чтобы вы могли получить название заголовка или описание жанра, или что-то ещеиначе вам нужно.

0 голосов
/ 28 марта 2019

Используется для сохранения этого формата в базе данных.

id     title               genre_id
1      Khiladi               ["5"]
2      Sanam              ["2","5","20"]
3      Raaz                 ["10"]

Вы можете использовать одно атомарное значение в одном столбце, которое является формой нормализации данных. Как этот способ, это довольно простой способ. Вы также можете использовать multiple tables с отношением ко многим ко многим, если хотите.

id     title               genre_id
1      khiladi              5
2      sanam                2
3      sanam                5
4      sanam                20
5      raaz                 10

Тогда вы можете запросить, как вы хотите. Как вы хотите count 5 из столбца genre_id. Теперь вы можете использовать этот запрос, вы получите желаемый результат.

$this->db->where('genre_id', $genre_id);
$this->db->from("table_name");
echo $this->db->count_all_results();

Надеюсь, это решение поможет вам.

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