我的数据库中有以下数据。
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);
答案 0 :(得分:0)
使用这种在数据库中保存记录的格式开始。
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();
希望此解决方案对您有所帮助。
答案 1 :(得分:0)
您的数据就是所谓的“多对多”关系。您有一个标题列表和一个体裁列表,您需要知道它们之间的关系。尽管您的设计可以非常迅速地回答“标题为“ 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
语法,以便获得标题的名称,流派的描述或其他所需的内容。