2016-04-05 13 views
0

Ich arbeite in Codeigniter. Ich habe zwei Tabelle job_post und snapshot.I haben Abfrage geschrieben, wie Daten aus obiger Tabelle zu holen:Vergleichen Sie zwei Array-und Rückgabe-ID, wenn Array übereinstimmen

Query1:

select skill from snapshot where user_id = 1 

und es gibt und Array wie:

Array 
(
[0] => stdClass Object 
    (
     [skill] => 1,2 
    ) 
) 

Query2:

select emp_id,skill from job_post 

und diese Abfrage gibt Array wie folgt zurück:

Array 
(
[0] => stdClass Object 
    (
     [emp_id] => 10 
     [skill] => 1,2,3 
    ) 

[1] => stdClass Object 
    (
     [emp_id] => 10 
     [skill] => 3,12,13 
    ) 
) 

Jetzt möchte ich diese an Array anpassen. Wenn query1 skill mit der query2 skill dann seine Rückkehr emp_id. Wie kann ich das emp_id bekommen?

Hinweis: Partical Spiel mit query1 und query2

+0

Volle Übereinstimmung oder teilweise Übereinstimmung? –

+0

@Sougata teilweise Übereinstimmung –

+0

Bitte zeigen Sie uns, was Sie versucht haben, um dies zu erreichen – Epodax

Antwort

1

Speichern Sie unter der Antwort der Abfrage in einer Variablen, sagen wir in $ mySkill.

select skill from snapshot where user_id = 1; 

"select emp_id,skill from job_post where concat(',',skill,',') like '%,".$mySkill.",%'" 

Alternative: Sie müssen & $ myskill explodieren, dann müssen dynamically.like erstellen oder zu erhalten:

$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; 
+0

Danke, dass es funktioniert. –

+0

Hier habe ich ein Problem. es findet die Fertigkeit als 1 und 2 in der Tabelle "job_post". Wenn beide Fähigkeiten übereinstimmen, wird es zurückkehren. –

+1

Ich habe den Beitrag aktualisiert.Bitte überprüfen. –

0

diesen Code Versuchen Sie, es wird Ihr Problem

<?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']; 
    } 
} 
?> 

dieser Wille Ausgang lösen:

Matched Id :1 
0

Warum nicht einzelne SQL verwenden Frage zu JOIN beide Tabellen? Wenn eine oder mehrere Fertigkeit (en) übereinstimmen, liefert Ihnen die Abfrage die benötigte emp_id mit passenden Fähigkeiten.

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 
Verwandte Themen