Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

theteo

Consulta MYSQL com LEFT JOIN

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na tabela "outerjoinhada", mas testando a igualdade da chave, teste no WHERE se a chave é nula para o não existente.

 

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'

And m.id_aluno is null

ORDER BY u.nome

 

 

Ou

 

 

Use not exuts ou not in numa subquery

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.