我在codeigniter工作。我有两个表job_post和snapshot.I已经编写了查询来从上面的表中获取数据,如:
查询1:
select skill from snapshot where user_id = 1
它给出了数组:
Array
(
[0] => stdClass Object
(
[skill] => 1,2
)
)
查询2:
select emp_id,skill from job_post
并且此查询返回如下数组:
Array
(
[0] => stdClass Object
(
[emp_id] => 10
[skill] => 1,2,3
)
[1] => stdClass Object
(
[emp_id] => 10
[skill] => 3,12,13
)
)
现在,我想将这些与数组匹配。如果 query1 技能与 query2 技能匹配,则返回emp_id。那我怎么能得到那个emp_id?
注意:与query1和query2
的部分匹配答案 0 :(得分:1)
将查询的响应存储在变量中,可以在$ mySkill中找到。
select skill from snapshot where user_id = 1;
"select emp_id,skill from job_post where concat(',',skill,',') like '%,".$mySkill.",%'"
替代方案:你需要爆炸$ myskill&然后需要动态创建或调整。像:
$arrmyskill = explode(",",$mySkill);
foreach($arrmyskill as $skill )
{
$str .=" or concat(',',skill,',') like '%,".$skill.",%' ";
}
$finalqry = "select emp_id,skill from job_post where concat(',',skill,',') like '%".$mySkill."%'" .$str;
答案 1 :(得分:0)
尝试此代码,它将解决您的问题
<?php
$arr1 = array('skill'=> '1,2,3');
$arr2 = array(array('emp_id'=>1,'skill'=> '1,2,3'),array('emp_id'=>1,'skill'=> '1,2,4'));
foreach($arr2 as $key => $val)
{
if($val['skill']== $arr1['skill'])
{
echo 'Matched Id :'.$val['emp_id'];
}
}
?>
这将输出:
Matched Id :1
答案 2 :(得分:0)
为什么不使用单个SQL查询来加入两个表?如果任何技能匹配,则查询将为您提供所需的具有匹配技能的emp_id。
SELECT
j.emp_id,
GROUP_CONCAT(j.skill) AS skills
FROM
job_post j
INNER JOIN `snapshot` s ON s.skill = j.skill
WHERE
s.user_id = 1
GROUP BY
j.emp_id