其中条件来自mysql和codeigniter中逗号分隔的varchar

其中条件来自mysql和codeigniter中逗号分隔的varchar,mysql,codeigniter,activerecord,Mysql,Codeigniter,Activerecord,我有两个名为music_types和music_albums的表,其中music_types由type_name和自动递增id组成,其中music_albums表中包含自动递增id、name、types,这是一个varchar,它将music_类型的id存储为逗号分隔的值,如1、2、3、4等。 那么,有谁能帮我从Music_albums table获得所有x类型的专辑吗 我试过mysql,但不正确。 所以请帮我写下这个问题 iam使用codeigniter,是否可以在codeigniters活动

我有两个名为music_types和music_albums的表,其中music_types由type_name和自动递增id组成,其中music_albums表中包含自动递增id、name、types,这是一个varchar,它将music_类型的id存储为逗号分隔的值,如1、2、3、4等。 那么,有谁能帮我从Music_albums table获得所有x类型的专辑吗

我试过mysql,但不正确。 所以请帮我写下这个问题

iam使用codeigniter,是否可以在codeigniters活动记录类中编写上述查询

另一点是,这是一个joomla组件表设计,我正在为android Web服务编写一个脚本,返回音乐事件、歌曲等

提前感谢。

决不,决不,决不在一列中存储多个值! 就像你现在看到的,这只会让你头疼。使你的桌子正常化。然后您可以正常加入。

永不,永不,永不在一列中存储多个值!
就像你现在看到的,这只会让你头疼。使你的桌子正常化。然后您可以正常加入。

您的类型数据和相册数据之间存在多对多关系。正如@juergen所提到的,像您这样尝试在一列中存储多个值是不正确的。快速的谷歌搜索将为您获取大量所需信息,但基本上您需要第三个“映射”表,它将相册及其类型简单地映射在一起。

您的类型数据和相册数据之间存在多对多关系。正如@juergen所提到的,像您这样尝试在一列中存储多个值是不正确的。快速的谷歌搜索将为您提供大量所需的信息,但基本上您需要第三个“映射”表,只需将相册及其类型映射在一起。

试试这一个,但前面提到的@juergen不存储逗号分隔的值。现在您可以按如下方式操作

$this->db->select('*');
$this->db->from('musical_albums');
 //$this->db->join('second table name', 'relation id of 1st table = relation id of 2nd table');
 //Custom string: in where 
$where = " FIND_IN_SET('x',`types`)";
$this->db->where($where);
$query = $this->db->get();

试试这个,但是前面提到的@juergen不存储逗号分隔的值,这会导致现在的痛苦,您可以按如下操作

$this->db->select('*');
$this->db->from('musical_albums');
 //$this->db->join('second table name', 'relation id of 1st table = relation id of 2nd table');
 //Custom string: in where 
$where = " FIND_IN_SET('x',`types`)";
$this->db->where($where);
$query = $this->db->get();

阅读关于FIND_IN_SET它将帮助您阅读关于FIND_IN_SET它将帮助您我知道,这是一个joomla组件表设计,我正在为一个android web服务编写一个脚本,该服务返回音乐事件、歌曲等。。但事实是,我不能改变表的设计,如果是这样,我必须重写整个组件。但我不擅长joomla编程。谢谢。然后在加入条件中使用find_in_set。我知道,这是joomla组件表设计,我正在为android web服务编写一个脚本,返回音乐事件、歌曲等。。但事实是,我不能改变表的设计,如果是这样,我必须重写整个组件。但我不擅长joomla编程。谢谢。然后在加入条件中使用find_in_set。