Ir para conteúdo

POWERED BY:

Arquivado

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

TheMasterFlash

join e union

Recommended Posts

Oi imasters, estou aqui a precissar de uma ajuda com a minha query...

SELECT * FROM posts AS p

    INNER JOIN (amizades)
    ON (
        p.p_mid = :meu_id
        OR p.p_mid IN (SELECT amizade_de FROM amizades WHERE amizade_para = :meu_id AND status = 1)
        OR p.p_mid IN (SELECT amizade_para FROM amizades WHERE amizade_de = :meu_id AND status = 1)
    )

    INNER JOIN (membros)
    ON (membros.m_id = p.p_mid)

    GROUP BY p.p_id DESC

esta query esta a funcionar perfeitamente, amostra todas as publicaçoes dos membros se forem amigos, agora eu queria era ir buscar mais resultados a outra tabela com um union, mas não estou a conseguir, se alguém me poder ajudar agradeçia, cumps!

 

EDIT: esqueçime de dizer que quero pegar dados de outra tabela para não estar a fazer outro select à parte, quero que fique tudo numa so query...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi o problema.

 

Você precisa fazer um UNION com outra tabela , diga a tabela e os campos.

 

Este inner join com OR pode ficar lento, mas se funciona ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja consegui resolver o problema, não vou precissar de fazer outro select mas mesmo assim como seria feito para eu ter uma ideia? e tem outra maneira de alterar a query acima para ter uma melhor perfomance?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente isto

 

 

SELECT * FROM posts AS p

    INNER JOIN amizades ade
    ON (p.p_mid = ade.amizade_de AND ade.status = 1)
 
    INNER JOIN amizades aate
    ON (p.p_mid = ade.amizade_ate AND aate.status = 1)



    INNER JOIN (membros)
    ON (membros.m_id = p.p_mid)
    where p.p_mid = :meu_id


    GROUP BY p.p_id DESC

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

Retorna este erro:

 

Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'status' in on clause is ambiguous in...

 

 

tente isto

 

 

SELECT * FROM posts AS p

    INNER JOIN amizades ade
    ON (p.p_mid = ade.amizade_de AND ade.status = 1)
 
    INNER JOIN amizades aate
    ON (p.p_mid = ade.amizade_ate AND aate.status = 1)



    INNER JOIN (membros)
    ON (membros.m_id = p.p_mid)
    where p.p_mid = :meu_id


    GROUP BY p.p_id DESC

 

Ja vi que editou o post, agora não retorna nenhum erro, mas também não aparece nenhum resultado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja vi que editou o post, agora não retorna nenhum erro, mas também não aparece nenhum resultado...

 

Talvez com outer join , ou uma view unindo as tabelas, mas se sua query funciona, deixa queito ....

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.