Eu tenho uma consulta MYSQL envolvendo instruções JOINS e Union, por meio das quais consulto várias tabelas para produzir um feed JSON. (Sou fraco em MYSQL, então peço desculpas antecipadamente.)
Agora tenho que adicionar comentários. Se o comentário for sobre algo em uma tabela separada, como Artigos, você poderá fazer um JOIN nas duas tabelas.
O problema que estou tendo é que, se o comentário estiver em um comentário, preciso de informações de duas linhas da tabela sambe, a nova linha de comentários 2 - bem como a linha de comentários original 1 sobre a qual se trata o novo comentário. Não sei como obter dados de 2 linhas de uma tabela em uma única consulta. Espero que haja uma maneira ou alguma outra estratégia que faça isso.
Aqui está uma versão simplificada da consulta.
Articles
id|text|pic|authorid
Users
id|name|pic
Comments
id|articleid|userid|commentid|text
SELECT a.id as 'itemid',a.text as 'body',a.pic as 'itempic',u.name as 'authorname',u.pic as 'authorpic', nil as 'subtext'
FROM Articles `a`
LEFT JOIN
Users `u`
ON a.authorid = u.id
UNION
Select c.id as 'itemid',c.comment as 'body',nil as 'itempic',u.name as 'authorname',u.pic as 'authorpic', cm.text as 'subtext'
FROM COMMENTS `c`
/* THIS APPROACH DOES NOT SEEM TO WORK *?
LEFT JOIN
COMMENTS `cm`
ON cm.id = c.id
/* end approach */
LEFT JOIN
Users `u`
ON c.userid = u.id
WHERE c.articleid = a.id
GROUP by itemid
Estou no caminho certo aqui ou como você pode acessar uma mesa duas vezes com a mesma consulta. Obrigado por qualquer sugestão.
Bom dia. Em primeiro lugar, gostaria de esclarecer se acertei no seu processo de pensamento.
Você deseja buscar todos os comentários pertencentes a uma postagem com base no ID do artigo. Em caso afirmativo, você pode usar esta consulta SQL para buscar todos os comentários pertencentes ao artigo. Os critérios principais são juntar os comentários e o artigo e, em seguida, os usuários aos comentários, porque o artigo tem um relacionamento um para muitos com os comentários e o comentário tem um relacionamento um para um com os usuários.
Portanto, use a junção esquerda para buscar todos os comentários do artigo e associar o usuário aos comentários com base no ID do usuário na tabela de comentários.
Um exemplo de código e visual são apresentados abaixo
Exemplo de resultado de imagem
Você pode ajustar o valor escolhido na consulta com base no seu design. Espero que ajude.
Obrigado