【问题标题】:Many to Many Join Query in CodeIgniterCodeIgniter 中的多对多连接查询
【发布时间】:2011-01-08 22:25:06
【问题描述】:

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

所以我有:

item table
fields: id, title

disc table
fields: id, title

item_disc table
fields: item_id, disc_id

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

除了在一个查询中使用连接更容易之外,如果我想检索多于 1 条记录,我目前需要对每个项目运行 2 个查询,因为我无法连接我的数据。

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

【问题讨论】:

    标签: codeigniter many-to-many


    【解决方案1】:

    因为 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
    

    替换?用你想要的东西

    【讨论】:

    • 除了绝对完美!!!!!!为什么我不需要使用 JOIN (我正在使用 ActiveRecord,并且您的查询转换为它按原样工作)。现在很困惑!
    • 另外,有什么聪明的方法可以使结果更直观地使用,即 item_id,item_title 只有一次与光盘子阵列?还是我只需要使用 foreach 根据自己的喜好处理它。
    • @esrylx:基本上 sql 不太擅长“嵌套结果”,因此由数据的消费者循环遍历结果集并检查 item_id 何时更改以检测结束分组...
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多