Ir para conteúdo

POWERED BY:

Arquivado

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

jeandredalex

MYSQL e PHP: Consulta em 3 tabelas e exibir o resultado concatenado

Recommended Posts

 

 

Olá a todos, bom dia.

Sou novo aqui no forum e andei pesquisando e não achei nenhuma solução para o seguinte.

Será que alguém tem conhecimento nessa área para me ajudar com a consulta?

Tenho as seguintes tabelas:

PRODUTOS (ID, NOME_PRODUTO)

Primary Key: ID

TAGS (ID, ID_PRODUTO, TAG)

Primary Key: ID

Foreign Key: ID_PRODUTO

CATEGORIAS (ID, ID_PRODUTO, CATEGORIA)

Primary Key: ID

Foreign Key: ID_PRODUTO

Conteúdo das tabelas:

PRODUTOS (ID, NOME_PRODUTO)

1 | Mesa

2 | Cadeira

3 | Caixa de papelão

TAGS (ID, ID_PRODUTO, TAG)

1 | 2 | Madeira

2 | 2 | Envernizada

3 | 2 | Marrom

CATEGORIAS (ID, ID_PRODUTO, CATEGORIA)

1 | 2 | Móveis

2 | 2 | Decoração

3 | 2 | Casa

Preciso de uma consulta para exibir o seguinte onde PRODUTO.ID = 2:

PRODUTO | TAGS | CATEGORIAS

Cadeira | Madeira, Envernizada, Marrom | Móveis, Decoração, Casa

Tentei usando GROUP_CONCAT, mas só funciona para 1 relacionamento, quando tento com 2 tudo desconfigura.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Cadmiel, estou usando Mysqli.


O máximo que eu consegui foi o select abaixo, ele exibe:


Cadeira | Madeira; Envernizada; Marrom


Não consigo fazer exibir com a outra tabela. Desconfigura todo o resultado e eu nem sei por onde começar. Já tentei INNER, RIGHT, LEFT, CROSS, JOINS de todas as formas possíveis.


$id = '2';


if($lista = $mysqli->prepare("SELECT p.nome, GROUP_CONCAT(t.tag SEPARATOR "; ")


FROM produtos AS p


INNER JOIN tags AS t ON t.id_produto = p.id


WHERE p.id = $id")){



$lista->execute();


$lista->bind_result($produto, $tag);


while($lista->fetch()){


echo $produto.' - '.$tag.' <br /> ';


}


$lista->close();


}


$mysqli->close();

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.