简体   繁体   中英

How to select multiple data from other table from each id separated by comma in codeigniter

I have the tables like this

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 |
+------------------+-------------+---------+

then I want the output like this

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

and then how to show the data like this using codeigniter, I really confused at all, anyone please help me!

Edit: With Codeigniter (not tested):

$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');

I suppose You need PHP loop method to loop this.

Use mysql GROUP_CONCAT function:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM