Показать как существующие & amp; несуществующие идентификаторы, сравнивающие две таблицы в & lt; select & gt;

У меня есть MySQL таблица «команда» имен сотрудников & их идентификаторы

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
}
}
}
?>

В настоящее время я получаю только существующие значения, я хочу показать также несуществующие.

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 выражение, чтобы определить, будет ли сотрудник назначен для конкретного проекта.

Демо здесь:

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector