[英]How to count value from JSON array
我的数据库中有以下数据。
id title genre_id
1 Khiladi ["5"]
2 Sanam ["2","5","20"]
3 Raaz ["10"]
现在我想计算像 5 = 2, 10=1 这样的匹配流派 ID 我得到的结果是正常值而不是 JSON。
假设$genre_id =5;
然后通过跟随我得到 1 但期望结果是 2
$this->db->where('genre_id' , $genre_id);
插入使用这种在数据库中保存记录的格式。
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
然后你可以随意查询。 就像你想从genre_id
列中count 5
genre_id
。 现在你可以使用这个查询你会得到你想要的结果。
$this->db->where('genre_id', $genre_id);
$this->db->from("table_name");
echo $this->db->count_all_results();
希望这个解决方案能帮到你。
您的数据就是所谓的“多对多”关系。 您有一个标题列表和一个流派列表,您需要知道它们之间的关系。 尽管您的设计非常快速地回答了“哪些类型适用于标题'Sanam'?”的问题。 它很难回答另一个问题:流派 5 中有哪些标题? 正如你已经发现的那样。
通常在像 MySQL 这样的关系数据库中,多对多关系使用三个表来表示。 我将在这里给您一个非常简短的介绍,但是如果您搜索“MySQL 多对多”,您会发现大量信息,其中一些是为初学者编写的。
您的表格可能类似于:
#Table Titles
id | title
--------------
1 | Khiladi
2 | Sanam
3 | Raaz
可能有关于标题的其他信息(描述,也许),但没有可能适用于其他标题的信息(如流派或导演)。
您将有一个类似的流派表:
#Table Genres
id | title
--------------
1 | Action
2 | Comedy
3 | Romance
那么你怎么知道哪些类型适合哪些标题呢? 您创建第三个表,作为每个 RELATIONSHIP 的一行。
#Table Title_has_Genre
title_id | genre_id
----------------------
1 | 5
2 | 2
2 | 5
2 | 10
等等。
现在,您可以轻松获取流派 5 中所有标题的 id,还可以获取与标题关联的所有流派的 id。
通常,您将在查询中使用JOIN
语法,以便获得标题的名称、流派的描述或其他任何您需要的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.