Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
As tabelas são:
tbl_usuarios (id_user, nome_user )
1 teo
2 Joao
3 Marcio
tbl_marcacoes (id_aluno, id_agenda)
1 1
2 1
3 2
ID_USER = ID_ALUNO
Eu preciso listar SOMENTE os usuarios que ainda não fizeram RESERVA
Entao, o select seria mais ou menos assim:
SELECT DISTINCT u.id_user, u.nome
FROM tbl_usuarios u LEFT JOIN tbl_marcacoes m
ON u.id_user <> m.id_aluno
WHERE
m.id_agenda = '$id_agenda'
ORDER BY
u.nome
CASO 1 - Para ID AGENDA = 1 retorna MARCIO - OK
CASO 2 - Para ID AGENDA = 2 retorna TEO e JOAO - OK
CASO 3 - PARA ID AGENDA = 4 retorna NADA ( Tinha que me trazer TEO, JOAO E MARCIO )
Obrigado.
Motta, nao funcionou. NÃO TROUXE NINGUEM AGORA.
Eu nao sei se esse seria o jeito correto.
Só pra deixar claro, e quero apenas LISTAR os alunos que ainda nao agendaram NADA.
Poderia me ajudar com essa sub_query ?
ou teria uma ideia melhor ?
SELECT id_user, nome FROM tbl_usuarios WHERE tipo_user = 'alu' AND id_user
not in (SELECT id_aluno from tbl_marcacoes WHERE id_agenda = '$id_agenda')
Valeu Motta. Muito obrigado novamente.
Na tabela "outerjoinhada", mas testando a igualdade da chave, teste no WHERE se a chave é nula para o não existente.
LEFT JOIN tbl_marcacoes m ON u.id_user = m.id_aluno
WHERE m.id_agenda = '$id_agenda'
And m.id_aluno is null
ORDER BY u.nome
Ou
Use not exuts ou not in numa subquery