gpt4 book ai didi

php - 使用多个连接进行查询

转载 作者:行者123 更新时间:2023-11-29 08:22:32 25 4
gpt4 key购买 nike

我现在正在学习 php 和 codeigniter,现在我想结合查询来快速有效。我已经全部做了,但还没有加入最后一张表...

我有 4 个表:posts、users、post_categories、categories;

enter image description here

我想要得到什么:

  1. 所有帖子
  2. 使用 usr_id 的用户信息
  3. 使用 cat_ids 从 post_categories 获取所有类别 ID
  4. 并使用 id_* 获取每个类别的名称

这就是我最终的结果...它并不完整,因为我一直在为每个 id_* 获取类别名称

$data = $this->db->select('p.*, u.nickname, u.usr_status, u.usr_rating, pc.*')
->from('posts p')
->join('users u', 'p.usr_id = u.id', 'left')
->join('post_categories pc', 'p.cat_ids = pc.id', 'left')
->limit($limit, $start)
->order_by('p.id', 'desc')
->where('p.active', 1)
->get()
->result_array();

任何人都可以帮助我在 codeigniter 中结束此查询吗?

编辑:在 post_categories 中:id_1 始终是...但 id_2 和 id_3 可以保留为 NULL(默认值)

最佳答案

像下面的SQL查询应该适合你......

SELECT 
posts.*,
users.nickname, users.user_status, users.usr_rating,
c1.category as category_1,
c2.category as category_2,
c3.category as category_3
FROM posts
INNER JOIN users ON user.id = posts.user_id
INNER JOIN post_dategories ON post_categories.id = posts.cat_ids
INNER JOIN categories c1 ON post_categories.id_1 = c1.id
LEFT JOIN categories c2 ON post_categories.id_2 = c2.id
LEFT JOIN categories c3 ON post_categories.id_3 = c3.id
WHERE posts.active = 1

注意: c2c3 上的 LEFT JOIN 因为您说它们是可选的

关于php - 使用多个连接进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945273/

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