显示现有的&amp;不存在的ID比较<select>中的两个表

时间:2017-02-20 04:50:46

标签: php mysql

我有一个mysql表&#39;团队&#39;员工姓名&amp;他们的身份证 ID |员工姓名 ------------------ 约翰一个 2乔 杰克 4吉尔 我正在项目中将这些员工分配的项目保存在一个阵列中。表格&#39; Employee_IDS&#39; ID | Project_Name | Employee_IDS -------------------------------- 1 Abc项目1,3,4 2 Dfg项目2,4 - 我想显示已分配给特定员工的员工列表 项目和那些不是。 拥有该数组的php变量是$ ppemployees。 &lt; select name =&#34; pemployees []&#34; ID =&#34; pemployees&#34;多个&GT;   &LT; PHP     $ myArray1 = explode(&#39;,&#39;,$ ppemployees);     foreach($ myArray1 as $ my_Array1)     {       $ sqlget5 =&#34; SELECT * FROM team WHERE id = \&#34; $ my_Array1 \&#34 ;;&#34 ;;       $ resget5 = mysql_query($ sqlget5);       if(mysql_num_rows($ resget5)== 0)       {         ?&GT;           &lt; option value =&#34;&lt;?php echo $ row5 [&#39; id&#39;]; ?&gt;&#34;&gt;&lt;?php echo $ row5 [&#39; FirstName&#39;]; ?&GT;&LT; /选项&GT;         &LT; PHP       }       其他       {         while($ row5 = mysql_fetch_array($ resget5))         {           ?&GT;             &lt; option value =&#34;&lt;?php echo $ row5 [&#39; id&#39;]; ?&GT;&#34;选择&gt;&lt;?php echo $ row5 [&#39; FirstName&#39;]; ?&GT;&LT; /选项&GT;           &LT; PHP         }       }     }   ?&GT; 目前即时只获取现有值,我想显示不存在的值。

1 个答案:

答案 0 :(得分:2)

尝试使用FIND_IN_SET()加入两个表的查询:

SELECT t2.Project_Name,
       t1.Employee_Name,
       CASE WHEN FIND_IN_SET(t1.ID, t2.Employee_IDS) > 0
            THEN 'Assigned'
            ELSE 'Unassigned' END AS status
FROM team t1
INNER JOIN projects t2
ORDER BY t2.Project_Name, t1.Employee_Name

请注意,我们实际上在这里使用交叉连接,在MySQL中可以使用INNER JOIN表示没有ON条件。交叉加入的原因是我们希望将每个员工与每个项目进行匹配,无论条件如何。然后,我们使用CASE表达式来确定是否将员工分配到特定项目。

在这里演示:

SQLFiddle