1

我有两个名为 music_types 和 music_albums 的表,其中 music_types 由 type_name 和一个自动增量 id 组成,其中 music_albums 表包含自动增量 id 、 name 、 types 这是一个 varchar ,它将 music_types 的 id 存储为逗号分隔值,如 1 ,2,3,4 等等。所以任何人都可以帮助我从 music_albums 表中获取所有类型 x 的专辑。

我试过mysql之类的,但它不正确。所以请帮我写这个查询..

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

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

提前致谢。

4

3 回答 3

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();

活动记录

FIND_IN_SET()

于 2013-09-15T19:03:48.443 回答
0

永远,永远,永远不要在一列中存储多个值!

就像你现在看到的那样,这只会让你头疼。规范化您的表格。然后就可以正常加入了。

于 2013-09-15T18:54:32.857 回答
0

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

于 2013-09-15T19:00:15.113 回答