CodeIgniter中有多对多加入查询

时间:2010-01-25 01:02:07

标签: codeigniter many-to-many

之前所有在JOIN的尝试都给我留下了填充id,结果标题键的光盘或项目数据(可能发生了冲突)。

所以我有:

item table
fields: id, title

disc table
fields: id, title

item_disc table
fields: item_id, disc_id

如何构建双连接,以便我可以访问项目的相关光盘。目前我正在运行两个单独的查询,一个用于单项记录,另一个用于光盘阵列。

除了在一个带有连接的查询中更容易做,如果我想要检索多个记录,我当前需要为每个项目运行2个查询,因为我无法加入我的数据。

请帮忙!!我觉得这是我最后的很多障碍(虽然不敢说得太早)。

2 个答案:

答案 0 :(得分:4)

因为item和disc都有名为id和title的列,所以它们会相互覆盖。您需要使用as来区分它们......

所有项目及其相关光盘:

select m.*, i.title as item_title, d.title as disc_title
from item i, disc d, item_disc m where i.id = m.item_id and
d.id = m.disc_id order by i.title, d.title

一个项目及其光盘:

select m.*, i.title as item_title, d.title as disc_title
from item i, disc d, item_disc m where i.id = m.item_id = ? and
d.id = m.disc_id order by d.title

替换?与您想要的项目

答案 1 :(得分:0)

这是我正在编译为一系列截屏视频的多对多数据库关系的CodeIgniter实现。这是抽象的,并不打算在生产环境中按原样使用。因此,它应该有助于澄清这一概念。

http://www.mattborja.com/web-development/codeigniter/databases/many-to-many-relationships-in-codeigniter-abstract/