Ir para conteúdo

POWERED BY:

Arquivado

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

Cícero Martins

[Resolvido] LIKE: SELECT 2 Tabelas

Recommended Posts

Fala tripulação, beleza?

 

Tenho 2 tabelas...

 

TABELA USUÁRIOS

ID - USUÁRIO

1 - chico

2 - joao

3 - maria

4 - mane

 

TABELA FAVORITOS

ID - IDUSER - FUSER

1 - 1 - 4

2 - 3 - 1

 

 

Explico as tabelas acima:

Cada usuário cadastrado na tabela USUÁRIOS tem um ID (auto_increment). Na tabela FAVORITOS são os usuários que se adicionam.

 

Na tabela FAVORITOS, o usuário que adiciona outro está no campo "IDUSER".

Por exemplo:

No ID 1, o usuário CHICO (ID: 1) adicionou o usuário MANE (ID: 4) como um favorito.

No ID 2, o usuário MARIA (ID: 3) adicionou o usuário CHICO (ID: 1) como um favorito.

 

 

Até aí tudo bem, sem problemas. Agora vem um detalhe.

Estou criando um recurso de AUTO COMPLETAR, para caso o usuário queira enviar uma mensagem para outro usuário, ele digite alguns caracteres, e o sistema sugira para ele os usuários que ele tem adicionado como FAVORITO.

 

Explico:

Sou o usuário CHICO. Quero mandar uma mensagem para o JOÃO. No campo onde digito o nome de usuário para quem quero enviar, o JOÃO não pode aparecer, afinal, ele não é um FAVORITO.

 

 

Acredito que usando as propriedades INNER JOIN e LIKE eu consiga fazer isso. Mas não consegui.

 

Tentei fazer algo assim, e não consegui, ELE LISTA TODOS OS USUÁRIOS QUE TENHO COMO FAVORITOS, INDEPENDENTE DO TERMO CONTIDO EM LIKE.

 

 

SELECT usuarios.id, usuarios.usuario, favoritos.iduser, favoritos.fuser FROM usuarios INNER JOIN favoritos ON usuarios.id=favoritos.iduser OR favoritos.id=amigos.auser WHERE usuarios.id<>'1' AND (favoritos.iduser='1' OR favoritos.fuser='1') LIKE usuarios.usuario='jo'

 

Quando utilizo esta query, ele me retorna:

ID - IDUSER - FUSER

1 - 1 - 4

2 - 3 - 1

 

 

Ao invés de me retornar um conjunto vazio, afinal, não tenho nenhum FAVORITO com o termo "jo".

 

 

Alguém pode me dar um HELP?

 

 

Desde já obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cícero Martins, pelo que entendi você quer selecionar só os FAVORITOS do usuário, certo? Se sua resposta for sim o que você tem que fazer é mais ou menos o que você postou, veja abaixo o exemplo de como ficaria.

SELECT
 usuarios.id, usuarios.usuario, favoritos.iduser, favoritos.fuser
FROM
 usuarios
   INNER JOIN favoritos ON (usuarios.id=favoritos.iduser)
WHERE
 usuarios.id = '1' OR
 usuarios.usuario LIKE 'jo%'

Neste meu SQL eu faço um INNER JOIN com a Tabela favoritos e filtro no WHERE que qro o usuário que tem o ID = 1 ou seu Nome começa com jo.

Agora algumas dúvidas:

1º No seu INNER JOIN você menciona uma Tabela que não existe: "amigos.auser"

2º você quer achar os dados do Usuário pelo ID ou por uma parte do nome deste?

Verifique ai se isto lhe ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por nada meu caro precisando estamos ai.

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.