ThinkPHP5 MySQL 能把第二张表的数据赋值给第一张表的某个字段吗? 200
图1是表1,图2是表2.表1中的advantage对应表2的type,以及图2的with_id对应表1的主键ID,也就是说,最终获取出来的数据是这种格式:array("i...
图1是表1,图2是表2.表1中的 advantage 对应表2的 type ,以及图2的 with_id 对应表1的主键ID,也就是说,最终获取出来的数据是这种格式:array( "id" => 1, "title" => "string", "content" => "string", "advantage" => array(6), "features" => array(4), "process" => array(7));用join写获取出来的数据就搞不懂该怎么去遍历了。$res = ServiceList::alias("s") -> field("s.*") -> join("service_in_arr si", "s.id = si.with_id") -> field("si.title as title1, si.content as content1") -> select();这种写出来的数据即图3,表1仅1条数据,表2的数据仅是表1某字段的一个数据集。若我需要按照第一种格式去获取数据,这种该怎么写?请大神莅临指导,非常感谢!
表1获取的格式
<code>
array(
"id" => 1,
"title" => "string",
"content" => "string",
"advantage" => "advantage",
"features" => "features",
"process" => "process"
);
</code>
表2获取的格式
<code>
array(
"id" => 1,
"with_id" => "string",
"type" => "string",
"title" => "string",
);
</code>
需要的格式
<code>
array(
"id" => 1,
"title" => "string",
"content" => "string",
"advantage" => array(6),
"features" => array(4),
"process" => array(7)
);
</code> 展开
表1获取的格式
<code>
array(
"id" => 1,
"title" => "string",
"content" => "string",
"advantage" => "advantage",
"features" => "features",
"process" => "process"
);
</code>
表2获取的格式
<code>
array(
"id" => 1,
"with_id" => "string",
"type" => "string",
"title" => "string",
);
</code>
需要的格式
<code>
array(
"id" => 1,
"title" => "string",
"content" => "string",
"advantage" => array(6),
"features" => array(4),
"process" => array(7)
);
</code> 展开
展开全部
SELECT
t1.id,
t1.title,
t2.type,
t2.title,
t2.content
FROM table1 t1
LEFT JOIN (SELECT
with_id,
type,
group_concat(title) as title,
group_concat(content) as content
from table2
group by with_id, type) t2
ON t1.id = t2.with_id
有几问题没看明白:
第一张表里的 "advantage“, "features", ”process" 这三个字段有什么用?
为什么要一次把所有数数查出来呢?不能在需要的时候再查第二张表吗?
追问
有用也没用,只是想着看清来一目了然,因为这个原始数据就是一个页面的,需要一次性取出来,本身advantage/features/process这三个字段是一个数组,也就是整个data是一二维数组。
追答
上面的sql是将每二张表的数据拼接成字符串。
也可以在遍历第一张的时候,去查询对应的第二张表的数据。
或者从第一张表的查询结果中提出id, 作为条件去查第二张表,再将两次的结果关联起来。
展开全部
如果你实在搞不懂的话,可以先不考虑联接查询,分两次查询,在遍历第一个查询列表中实现数据绑定,先达到目的再进行代码优化为上上选
追问
目前就是这样的,两次查询,根据类型重构数组,只是这样一对代码,看起来极不美观。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重新拔插耳机进行对比尝试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询