【问题标题】:CI Active record, Select record from multiple tableCI活动记录,从多个表中选择记录
【发布时间】:2017-07-05 12:20:46
【问题描述】:

我有两张桌子。第一个是product,管理员将在其中添加产品,另一个是product_detail,供应商将在其中添加详细信息。多个供应商可以添加具有产品详细信息(例如售价、报价等)的相同产品。

“我想从products 表中选择产品,并想从product_detail 表中选择产品详细信息,但只有一行产品详细信息的售价较低”。

所以我想使用 CI 活动记录来获取最终输出作为产品列表及其详细信息。

【问题讨论】:

  • 您只想要最低价的产品?
  • price=min(price) 在 where 条件下使用
  • 都可以理解,而不是这个但只有一行产品细节的售价较低”。请添加预期结果/示例以便更好地理解

标签: php mysql codeigniter


【解决方案1】:

以此为例:

Create table #Product(id int, name varchar(100));
Create table #Product_detail(id int, product_id int, detail varchar(100));

insert into #Product values
(1,'Item1'),
(2,'Item2')


insert into #Product_detail values
(1,1,20),
(2,1,10),
(3,1,40),
(4,2,70),
(5,2,50)

这是您的基本查询:

select 
a.*, b.price
from 
 #product a inner join
 (select product_id, min(price) price
  from #product_detail
  group by product_id
 ) b
on a.id = b.product_id

在 CI 中,尝试执行以下操作:

$var = $this->db->query("select a.*, b.price from #product a 
                         inner join
                        (select product_id, min(price) price
                         from #product_detail
                         group by product_id
                         ) b
                        on a.id = b.product_id")->result_array();

样本输出:

id          name   price
----------- ------ -----------
1           Item1  10
2           Item2  50

【讨论】:

    【解决方案2】:

    您首先应该在模型中创建 getter 和 setter,并使用 CI 活动记录 + pdo 从我的角度来看它更安全。

    最好的问候。

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2023-03-30
      • 2021-08-05
      相关资源
      最近更新 更多