php - 如何在codeigniter中从每个id中选择以逗号分隔的其他表中的多个数据

标签 php mysql codeigniter

我有这样的表格

tbl_post

+-----------+--------------+
| post_id   | post_content |
+-----------+--------------+
| 1         |  contentone  |
+-----------+--------------+

tbl_category

+-------------+---------------+
| category_id | category_name |
+-------------+---------------+
|           1 | Politic       |
|           2 | Social        |
|           3 | Economy       |
+-------------+---------------+

tbl_category_post

+------------------+-------------+---------+
| category_post_id | category_id | post_id |
+------------------+-------------+---------+
|                1 |           1 |       1 |
|                2 |           2 |       1 |
|                3 |           3 |       1 |
+------------------+-------------+---------+

然后我想要这样的输出

+--------------+--------------------------+
| post_content |         category         |
+--------------+--------------------------+
|            1 | Politic, Social, Economy |
+--------------+--------------------------+

然后如何使用codeigniter显示这样的数据,我真的很困惑,请任何人帮助我!

最佳答案

编辑:使用 Codeigniter(未测试):

$this->db->select('post_id, GROUP_CONCAT(tc.category_name) AS category_name')
->from('tbl_category_post tcp')
join->('tbl_category tc', 'tc.category_id=tcp.category_id', 'left')
->group_by('tcp.post_id');

我想你需要 PHP 循环方法来循环它。

使用mysql GROUP_CONCAT函数:

SELECT post_id, GROUP_CONCAT(tc.category_name) AS category_name
FROM tbl_category_post tcp
LEFT JOIN tbl_category tc ON tc.category_id=tcp.category_id
GROUP BY tcp.post_id

关于php - 如何在codeigniter中从每个id中选择以逗号分隔的其他表中的多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33857774/

相关文章:

PHP:如何重命名文件夹

php - DateTime 对象在没有 var_dump 的情况下返回 NULL

php - 使用 MySQLi 从 MySQL 数据库中删除 ROW

mysql - 查询去除字符串中特定长度的字符词?

php - 阵列克隆的性能

php - 将 mysql where_in 查询更改为 codeigniter 事件记录

mysql - 出现“找不到转换器”错误

php - 我如何使用 php 处理大的 mysql 表进行登录验证

php - 如何从 codeigniter 中的自定义模型扩展模型

php - codeigniter 中的 JQuery 实时搜索