我有两个名为musical_types和musical_albums的表,其中musical_types由type_name和一个自动增量id组成,其中,在musical_albums表中包含自动增量id,名称,类型是varchar,它将musical_types的id存储为逗号分隔值1,2,3,4等 所以任何人都可以帮助我从musical_albums表中获取x类型的所有专辑。
我试过像mysql一样,但是不正确。 所以请帮我写这个查询..
我使用codeigniter,是否可以在codeigniters活动记录类中编写上述查询。
另一点是这是一个joomla组件表设计,并且我为一个返回音乐事件,歌曲等的android webservice编写脚本。
提前致谢。
答案 0 :(得分:4)
试试这个,但@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();
答案 1 :(得分:0)
就像你现在看到的那样,这只会让你感到头痛。规范化你的表格。然后你可以正常加入。
答案 2 :(得分:0)
您所拥有的内容是您的类型数据和相册数据之间的多对多关系。正如@juergen所提到的,尝试在一个列中存储多个值就像你正在做的那样是不正确的。快速谷歌搜索将为您提供所需信息,但基本上您需要第三个“映射”表格,只需将相册及其类型映射到一起。