php codeigniter 组装查询结果

标签 php mysql codeigniter

我的设置如下:

Table 'data': 'title','body',...,'user_id',...  
Table 'users': 'user_id','some_val'...

基本上我想以某种方式在 user_id 字段上连接表“data”和“users”,以便我可以从“users”表中提取“some_val”。我的问题是,并非“数据”表中的每个 user_id 在“用户”表中都有相应的条目。

使用 codeigniter/php,我最终想组装一个结果数组,其中包含来自“users”表的所有“some_vals”连接 data.user_id = users.user_id。但是当数据表中存在 user_id 而不是用户表中时,我想将一些默认值插入到我的结果数组中(希望这个数组可以与数据表中的 user_id 的顺序相同)。

希望这不是太不清楚。有什么想法吗?

最佳答案

您要做的是所谓的 left join .本质上,这会获取所有行的 data 并匹配 users 表。除非,如果 data 没有匹配的 user_id,它只会为这些列加载 null。为了处理那些 null,您可以使用 coalesce函数,它将 null 替换为某个值(如果它是数字,则可以是 1234,但出于演示目的,我只是选择了 'DefaultVal')。

总之,一切都是这样的:

select
    coalesce(u.some_val, 'DefaultVal') as some_val
from
    data d
    left join users u on
        d.user_id = u.user_id

关于php codeigniter 组装查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186208/

相关文章:

php - CodeIgniter where and like sql 查询语句

PHP 使用 HTML 表单更新 MySQL 表

php - fatal error : Class 'Services_JSON' not found

php - 如何显示从 Blade 到 Blade 选择的日期?

mysql - 在 JOIN 语句中使用 MAX

javascript - 如何使用 Codeigniter 将 id 传递给 Bootstrap 模式?

php - 根据用户输入显示数据库中的数据

php - 在结果页面上启用用户 "sort by"

PHP 不将数据保存到附属脚本中的数据库

codeigniter - Codeigniter 事件记录中的子查询