Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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...
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?
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 DESCRetorna 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...
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 ....
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.