php codeigniter组装查询结果

php codeigniter组装查询结果,php,mysql,codeigniter,Php,Mysql,Codeigniter,我的设置如下: Table 'data': 'title','body',...,'user_id',... Table 'users': 'user_id','some_val'... 基本上,我希望以某种方式将user_id字段上的表'data'和'users'连接起来,以便从'users'表中提取'some_val'。我的问题是并非“数据”表中的每个用户id在“用户”表中都有相应的条目 使用codeigniter/php,我最终希望组装一个结果数组,其中包含来自“users”表的所有

我的设置如下:

Table 'data': 'title','body',...,'user_id',...  
Table 'users': 'user_id','some_val'...
基本上,我希望以某种方式将user_id字段上的表'data'和'users'连接起来,以便从'users'表中提取'some_val'。我的问题是并非“数据”表中的每个用户id在“用户”表中都有相应的条目

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


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

你想做的就是所谓的“a”。本质上,这将获取
数据的所有行
,并匹配
用户
表。除此之外,如果
数据
没有匹配的
用户id
,它只会为这些列加载
null
。为了处理那些
null
s,您可以使用该函数,它将
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

感谢您对该查询的快速响应-我不需要“从数据d,用户u…”吗?不
来自数据d,用户u
是表示
来自数据d内部连接用户u on…
的缩写。在本例中,我们使用的是
左连接
,而不是
内部连接
内部联接
将仅获取具有有效
用户id的数据行
left join
将获得所有行,并为与
数据不匹配的
用户
列返回
null
。哦,别担心,我读得更仔细了,我说的没有意义。谢谢你的帮助!我不知道合并功能很高兴能帮上忙。
coalesce
函数实际上存在于每一个RDBMS中,并且非常有用。
left join
s也是如此。这两个概念对于更高级的SQL来说都是必不可少的。此外,如果这对您有帮助,请将其标记为答案/投票给未来的观众。而且,我碰巧喜欢我名字旁边的数字上升,所以这不完全是利他动机:)