【问题标题】:select from multiple rows with a column having same value and another column having different values从具有相同值的列和具有不同值的另一列的多行中选择
【发布时间】:2017-12-24 09:48:43
【问题描述】:

我正在使用 codeigniter,我想从有两列 lab_id 和 service_id 的表中选择数据

lab_id service_id 1 1 1 2 3 1

我只想选择同时具有 1 和 2 作为服务 ID 的 lab_id "1"。 目前我正在使用以下代码但无法正常工作。

<pre>    
    $this->db->select('lab_id');
    $this->db->from('labs_services_mapping');
    foreach ($data as $value) {
        $this->db->where('service_id',$value['id']);
    }
    $this->db->group_by('lab_id');
    $query = $this->db->get()->result();
</pre>

$data 是一个带有 service_id 的数组

【问题讨论】:

  • 我不清楚你的问题...你是在问“给我所有属于 lab_id = 1 的 service_id 吗?
  • 你使用哪个版本的 CI?
  • 这是在原始 sql 中执行此操作的方法,您需要通过 CI 复制此操作:stackoverflow.com/questions/14835190/…
  • @TimBrownlaw 我想选择 service_id 为 1 和 2 的 lab_id
  • 这个foreach循环是强制性的吗?

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

这应该可以解决问题

$this->db->select('lab_id');
$this->db->from('labs_services_mapping');
foreach ($data as $value) {
    $this->db->or_where('service_id',$value['id']);
}
$this->db->group_by('lab_id');
$query = $this->db->get()->result();

你也可以尝试使用where_in

$this->db->select('lab_id');
$this->db->from('labs_services_mapping');
$this->db->where_in("service_id", $data);
$this->db->group_by('lab_id');
$query = $this->db->get()->result();

既然你想要一个静态结果,你应该这样做

$this->db->select('lab_id');
$this->db->from('labs_services_mapping');
$this->db->where_in("service_id", [1,2]);
$this->db->group_by('lab_id');
$query = $this->db->get()->result();

【讨论】:

  • 这些也将返回 lab_id =3。
  • 打印出您的数据数组并将其添加到您的帖子中 - 因为上面的查询应该按照我说的做
  • @sintakonte $data 的内容是
     array(3) { [0]=> array(1) { ["id"]=> string(1) "1" } [1 ]=> array(1) { ["id"]=> string(1) "2" } [2]=> array(1) { ["id"]=> string(1) "3" } } 
  • @sintakonte 我只想要那些具有 1 和 2 service_id 的条目 lab_id。
  • 问题是 - 你想以静态方式做到这一点吗?因为根据您的输出,很清楚您得到了所有 3 个结果 - 不过我更新了我的答案 - 但我不明白这个目的:P - 为了了解你想要什么,你应该发布你的整个模型。 (顺便说一句:我不明白这里的反对意见......)
猜你喜欢
  • 2019-05-31
  • 2017-02-14
  • 2012-05-25
  • 2022-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
相关资源
最近更新 更多