gpt4 book ai didi

php - 根据复合主键获取不同的列值

转载 作者:行者123 更新时间:2023-11-29 13:03:56 25 4
gpt4 key购买 nike

我有一张 table :

table : resource

resource_id | name
------------------
1 | res1
2 | res2


table : type

type_id | name
---------------
1 | type1
2 | type2

table : action

action_id | name
-----------------
1 | read
2 | add
3 | edit
4 | delete
5 | disable

最后是他们的映射表

table : mapping

resource_id | type_id | action_id
------------------------------------
1 | 1 | 1
1 | 1 | 2
1 | 1 | 3
2 | 1 | 1
2 | 1 | 2
2 | 1 | 3
2 | 2 | 4
2 | 2 | 5

等等..

现在我做了一个查询来获取:(循环遍历每个 type_id)

对于 type_id = 1,我得到:

   resource_id | type_id
---------------------
1 | 1
1 | 1
1 | 1

虽然我只想得到一行

同样

对于 type_id = 2

我得到:

resource_id | type_id
---------------------
2 | 1
2 | 1
2 | 1
2 | 2
2 | 2

虽然我只想得到 2 行:即

resource_id | type_id
---------------------
2 | 1
2 | 2

..等等

这是我的查询:

 $this->db->select ( 'p.resource_id, p.type_id' );
$this->db->from ( 'mapping p' );
$this->db->join ( 'resources r', 'p.resource_id = r.resource_id' );
$this->db->join ( 'type t', 'p.type_id = t.type_id' );
$this->db->where ( 'p.type_id', $typeId );

我也尝试过:(引用:http://ellislab.com/forums/viewthread/57781/)

 $this->db->select ( 'DISTINCT p.resource_id, p.type_id' );
$this->db->from ( 'mapping p' );
$this->db->join ( 'resources r', 'p.resource_id = r.resource_id' );
$this->db->join ( 'type t', 'p.type_id = t.type_id' );
$this->db->where ( 'p.type_id', $typeId );

但是不同的不起作用,我得到:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法。

最佳答案

在第一个查询中使用分组:按resource_id、type_id分组

这将限制结果行的数量。

关于php - 根据复合主键获取不同的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22983260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com