Problema com SELECT em 2 tabelas

07/07/2017

0

Olá pessoal,

estou com um problema em um select, provavelmente por escassez de conhecimento da minha parte, por isso lhes peço uma ajuda.

Quero listar publicações feitas na tabela "publicacoes", mas somente as que eu mesmo fiz ou as que meus amigos fizeram. Na tabela amizades, tenho os campos usuario (id de quem pediu a amizade), seguindo (id de quem recebeu o pedido de amizade) e o status do pedido (1 = pedido aceito).

Com exceção do status = '1', onde houver = '1' na query, estou dizendo que o usuário que está executando essa query (usuário logado) é o de id 1 (na minha tabela de usuários).

SELECT publicacoes.*,amizades.* FROM publicacoes,amizades
	WHERE
    	(
            (amizades.usuario = '1' OR amizades.seguindo = '1') 
            AND 
            amizades.status = '1' 
        	AND 
            (amizades.usuario = publicacoes.usuario OR amizades.seguindo = publicacoes.usuario)
        )
        OR 
        publicacoes.usuario = '1';


O que "acho" que estou dizendo com o código acima:

Querido mysql, consulte para mim, nas tabelas publicacoes e amizades. Quero que exiba as publicações de acordo com 2 critérios:

1. Minhas publicações (OR publicacoes.usuario = '1')
2. Publicações do meu círculo de amizades
2.1. verifique na tabela de amizades todos os registros em que eu pedi (amizades.usuario='1') OU (OR) em que me pediram (amizades.seguindo='1') amizade. Um dos dois!
2.2. E esta amizade tem que estar selada (amizade.status = '1')! Isso não tem choro, tem que estar selada!
2.3. E, um dos IDs (meu ou de meu amigo) tem que constar como autor da publicação (amizades.usuario = publicacoes.usuario OR amizades.seguindo = publicacoes.usuario).

Só isso que quero querido mysql. Obrigado. De nada.


Então amigos, digam-me, em qual trecho do meu código estou falando grego com o MySQL :)

Obrigado pela atenção!
Tiago

Tiago

Responder

Post mais votado

25/01/2018

Olá Tiago,

Não sei se já resolveu, mas veja se desta forma chega à solução que procura:

Select Publicacoes.* from Publicacoes inner join
	amizades ON (amizades.usuario = publicacoes.usuario) or (amizades.seguindo = publicacoes.usuario)
where (amizades.usuario = 1) and (amizades.status = 1)

Jerson Boer

Jerson Boer
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar