Ir para conteúdo

POWERED BY:

Arquivado

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

Gemenson França

Como consultar dois valores no mesmo campo Mysql

Recommended Posts

Olá pessoal, estou com mais uma dúvida, gostaria de saber como realizar um while para cada registro dentro do mesmo campo na tabela, e cada um desses registros serem impressos na tela separadamente, segue o ex:

 

TABELA USUARIO

========================================

ID / NOME / PEDIDOS

========================================

01 / MARCOS / 02

========================================

02 / ROBERTO / 01, 03, 04

========================================

03 / ANA / 01

========================================

04 / JÚLIA / 02

========================================

 

Explico:

 

obs: levando em cosiderção que estamos em uma pagina dedicada ao usuario ROBERTO de ID 02...

 

$sql = mysqli_query($conexao, "SELECT * FROM usuario WHERE id = '$pedidos'");

$row = mysqli_num_rows($sql);
if ($row > 0) {
while ($linha = mysqli_fetch_array($sql)) {
$nome = $linha['nome'];
echo @nome;

}

}

 

Neste caso o valor a ser impresso na tela será:

MARCOS

ANA

JÚLIA

 

já que os ID's da TABELA USUARIO estão relacionados ao valor do campo PEDIDOS;

porém no meu caso apenas o primeiro valor é impresso na tela, no caso:

 

MARCOS

 

então essa é minha dúvida... como recuperar todos os valores do campo PEDIDOS pertencente ao usuario ROBERTO (ID:02) e imprimir na tela todos os registros como no primeiro exemplo?

 

agradeço a todos que ajudarem!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://pt.m.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados

 

http://www.devmedia.com.br/guia-simplificado-para-as-5-formas-normais-artigo-revista-sql-magazine-87/21043

 

 

Normalize esta tabela , colunas deste tipo em lista dão um trabalho desnecessário para fazer operações triviais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giesta

 

Não , atente que o campo é gravado numa lista , teria de ser um LIKE mesmo assim sujeito à erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

select * from trabela where pedidos in (select pedidos from tabela where id = '02')

 

Nesta SQL o resultado seria o mesmo ID, afinal, está comparando o campo `pedidos` com o próprio campo `pedidos`, mesmo comparando o campo `id` com o campo `pedidos` não seria possível nesta SQL, pois o IN encontra o valor igual dentro de uma lista, e não dentro de uma palavra (string).

 

O "normal" seria "normalizar" a tabela, e utilizar um JOIN.

 

@Gemenson França, para este caso, "normalizar" implicaria em criar uma outra tabela com o relacionamento, ou seja, para cada `id` do usuário, estariam relacionados o `id` que deveria estar em `pedido`, para isso, cria-se uma PRIMARY KEY composta, assim o `id` do usuário ROBERTO apareceria três vezes, uma para cada `id` pedido.

 

Um pouco confuso, mas ficaria assim:

 

==========================

ID / PEDIDOS

==========================

02 / 01

==========================

02 / 03

==========================

02 / 04

==========================

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.