[RESOLVIDO] MultiSelect pegar os selecinados e não selecionados

Boa Noite

Preciso de um apoio como tenho um campo multiselect com informações da tabela alunos
Select
João
Paulo
Joaquim
Manuel

suponhamos que eu selecione o João e o Paulo esses selecionados capturo em um campo presentes que fica da seguinte forma : 3,10 (id_aluno) até ai tudo bem… A minha dificuldade é… Como faço para pegar aqueles que não foram selecionados.
que eu considero como ausentes que seria o Joaquim e o Manuel
Pensei em um select : select id_aluno FROM vw_alunos WHERE id_aluno not IN (aqui_os_selecionados)…não sei como carregar essas informações no campo ausentes com os ids do Joquim e Manuel.

ficando assim:
{presentes}=3,10…
{ausentes}=22,15…

http://arq.dtin.net/Captura-de-tela-2022-12-28-214402.jpg

Query

Select Campo from tabela where campo not in ($selecionados)

Certo…nesse caso o resultado dessa query com varios registros ficar no no campo
{ausentes}=22,15,…<-- dessa forma ?

$selecionados deve ter os valores separados por virgula, se forem alfanuméricos cada valor entre aspas simples.

Minha dificuldade esta aqui não consigo colocar os as informações separados por , - {ausentes}=10,20,30

[Não resolvido]
Ainda não consegui resolver…
os presentes pego do duplo_select.do próprio scriptcase coloco delimitação
Daí o campo {selecionados}= 1,45,30,80
Agora não selecionado não consigo pegar os múltiplos registros dos não selecionados e colocar no campo {ausentes}=9,3,7,60 delimitados por vírgula.

mas o compo multiselect vc pode obter j[a separados por virgula.

Então até ai ok em pegou os selecionados dai ele vai colocando no campo {presentes}=5,10,65,80
também tenho um campo {ausentes} que nesse caso estou tentando resolver com certeza estou fazendo algo errado que é da seguinte forma:

sc_lookup(ds, “SELECT id_aluno FROM vw_alunos_matriculados WHERE ID_TURMA=[turma] AND ID_UNIDADE=[unidade] and id_aluno not in {presentes} ORDER BY id_aluno”);
$qtde = count( {ds});

for ($i = 0; $i = $qtde ; $i++) {
	
	sc_select(rs, "SELECT id_aluno FROM vw_alunos_matriculados WHERE ID_TURMA=[turma] AND ID_UNIDADE=[unidade] ORDER BY id_aluno");
	
	**{ausentes}={rs}->fields[0].',';**

nesse caso o resultado dessa select gostaria que ficasse {ausentes}= 81,90,45,3 da mesma forma quando uso o duplo select do scriptcase.
Não sei se deu para entender talvez a minha lógica esteja equivocada. e também estou me familarizando com PHP, venho do delphi estamos migrando uns sistemas estou apanhando.

Obrigado

Nesse código acima está faltando os parênteses no where {presentes}. Tem que ficar assim ({presentes})

Ronaldo Tudo bem… Obrigado… esse detalhe já resolvi agora como pego esse resultado e colocar em um unico campo tabulado por vírgula ->>>> {ausentes}= 81,90,45,3 <<<— dessa forma

$_ausentes = '';
$sql = "SELECT id_aluno FROM vw_alunos_matriculados where id_turma=[turma]";
$sql .= " and id_unidade=[unidade]";
$sql .= " and id_aluno NOT IN ({presentes})";
sc_select(rs,$sql);
if ( {rs} === false ) {
     echo "Erro de acesso. Mensagem = " . {rs_erro};
} else {
    while ( !{rs}->EOF ) {
        $_ausentes .= {rs}->fields[0].',';
        {rs}->MoveNext();
    }
    {rs}->Close();
}

$_ausentes = trim($_ausentes,',');
1 Curtida

ou de maneira mais simplificada:

$sql = "SELECT group_concat(id_aluno) FROM vw_alunos_matriculados where id_turma=[turma]";
$sql .= " and id_unidade=[unidade]";
$sql .= " and id_aluno NOT IN ({presentes})";
$sql .= " Group By id_turma";
sc_lookup(rs,$sql);
$_ausentes = $ds[0][0];

[RESOLVIDO]
Muito Obrigado!! Top!!