php - 显示比较 <select> 中两个表的现有和不存在的 ID

标签 php mysql

我有一个 mysql 表“团队”,其中包含员工姓名及其 ID

ID | Employee_Name
------------------
1    John
2    Joe
3    Jack
4    Jill

我将分配给这些员工的项目保存在“projects”表中的数组中,作为“Employee_IDS”

ID | Project_Name | Employee_IDS
--------------------------------
1    Abc Project    1,3,4
2    Dfg Project    2,4

-

我想显示已分配给特定的员工列表 项目和那些没有项目的人。

包含该数组的 php 变量是 $ppemployees。

<select name="pemployees[]" id="pemployees" multiple>                                                                
  <?php
    $myArray1 = explode(',', $ppemployees);
    foreach($myArray1 as $my_Array1)
    {
      $sqlget5 = "SELECT * FROM team WHERE id=\"$my_Array1\";";
      $resget5 = mysql_query($sqlget5);
      if(mysql_num_rows($resget5) == 0)
      {
        ?>                                                            
          <option value="<?php echo $row5['id']; ?>"><?php echo $row5['FirstName']; ?></option>
        <?php
      }
      else
      {
        while($row5 = mysql_fetch_array($resget5))
        {
          ?>                                                            
            <option value="<?php echo $row5['id']; ?>" selected><?php echo $row5['FirstName']; ?></option>
          <?php
        }
      }
    }                                                                
  ?>

目前我只获取现有值,我也想显示不存在的值。

最佳答案

尝试使用 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 中可以使用不带 ON 条件的 INNER JOIN 来表达。交叉连接的原因是我们希望将每个员工与每个项目相匹配,无论任何条件。然后,我们使用 CASE 表达式来确定是否将员工分配到特定项目。

此处演示:

SQLFiddle

关于php - 显示比较 <select> 中两个表的现有和不存在的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42336733/

相关文章:

php - PHP 比较中的变量位置

MySQL查询按条件排序

javascript - 如何在 `node-mysql` 查询中获取结果的值

php - 使用 PHP 5.5 UTF-8 问题插入对 MYSQL 的更新

php - 找出最接近的 (n) PHP 的较大倍数

php - 如何从 foreach 中执行的准备(更新)语句中获取行数

php - Yii2 "has no relation named"在搜索模型中甚至在主模型中定义的函数

php - 将复选框值存储到mysql数据库

php - 直接加入zend框架

PHP 循环 x 次,使用 while 和 if