Skin_ Postado Julho 17, 2008 Denunciar Share Postado Julho 17, 2008 (editado) Olá pessoal,considerem as tabelas:Table Vendedor ( idv -> Chave primária, nome ); Table Mercadoria( idm -> Chave primária, produto ); Table Vend_Merc( idv, idm, Primary Key(idv,idm), idv -> Chave estrangeira de Vendedor, idm -> Chave estrangeira de Mercadoria ) Eu preciso colocar em uma tabela todas as mercadorias vendidas por vendedores com nome começando com 'J'; A tabela precisaria ficar assim: | vendedor | Mercadorias | | joca | relógio,lápis,régua| | joão | relógio,caderno| ... Ou seja, todas as mercadorias de cada vendedor encontrado precisam ficar na mesma linha Não estou com problemas com a consulta. SELECT V.nome,M.produto FROM Vendedor as V JOIN Vend_Merc as VM ON V.idv = VM.idv JOIN Mercadoria as M ON VM.idm = M.idm WHERE V.nome LIKE('j%')Não sei como fazer para percorrer os registros da consulta de modo a organizar as informações conforme o exemplo de tabela.Alguém poderia me ajudar?Valeu! Editado Julho 17, 2008 por Skin_ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leo Medina Postado Julho 17, 2008 Denunciar Share Postado Julho 17, 2008 (editado) <?phpmysql_connect("localhost", "mysql_user", "mysql_password") or die("Não foi possível conectar: " . mysql_error());mysql_select_db("mydb");$query ="SELECT V.nome,M.produto FROM Vendedor as V JOIN Vend_Merc as VM ON V.idv = VM.idv JOIN Mercadoria as M ON VM.idm = M.idm WHERE V.nome LIKE('j%')";$result = mysql_query($query);if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message);}echo "<table><tr><td>vendedor</td><td>mercadoria</td></tr>";while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "<tr>" printf("<td>%s</td><td>%s</td>", $row["nome"], $row["produto"]); echo "</tr>"}echo "</table>"mysql_free_result($result);?>Eu não testei o código não, mas acho q é isso. Espero ter ajudado. Editado Julho 17, 2008 por Leo Medina Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Skin_ Postado Julho 17, 2008 Autor Denunciar Share Postado Julho 17, 2008 Eu não testei o código não, mas acho q é isso. Espero ter ajudado.Obrigado Leo, mas isso não resolve meu problema!Seu código oferece como resposta:-------------------------------- Vendedor | Mercadoria -------------------------------- joao F. M. | relógio joao F. M. | lápis joao F. M. | régua Joca A. B. | relógio Joca A. B. | caderno ... Mas eu preciso exibir assim: -------------------------------- Vendedor | Mercadoria -------------------------------- joao F. M. | relógio,lápis,régua Joca A. B. | relógio,caderno ...Isto é, todas as mercadorias vendidas por joão precisam estar na mesma linha que seu nome (e assim com todos os vendedores)Ainda estou precisando de ajuda! se alguém tiver alguma sugestão...Valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leo Medina Postado Julho 21, 2008 Denunciar Share Postado Julho 21, 2008 (editado) ah, tá, você tá querendo as mercadorias agrupadas por vendedor...Se o campo mercadoria fosse, ao invés de varchar, um campo numérico poderíamos usar umas das funções agregadas do sql e resolveríamos o problema com uma cláusula "group by" na query.Mas nesse caso o q você tem q fazer é ordenar a query q está na variável $query pelo nome do vendedor e dentro do loop você vai testar se o vendedor se repete. Enquanto ele se repetir você concatena os valores do campo "Mercadoria" em uma variável e quando ele não se repetir mais você dá o "echo". Entendeu?Seria uma coisa mais ou menos assim (eu não testei, mas já é uma idéia pra você começar):(...)$query ="SELECT V.nome,M.produto FROM Vendedor as V JOIN Vend_Merc as VM ON V.idv = VM.idv JOIN Mercadoria as M ON VM.idm = M.idm WHERE V.nome LIKE('j%') order by V.nome";(...)$i=0;while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $i++; $vendedor = $row["nome"]; //Vendedor Atual if ($i==1) $vendedor_anterior = $vendedor; if ($vendedor==$vendedor_anterior) $produtos.=$row["produto"].", "; else { echo "<tr>"; printf("<td>%s</td><td>%s</td>", $vendedor_anterior, $produtos); echo "</tr>"; $produtos=$row["produto"].", "; } $vendedor_anterior = $vendedor;}echo "<tr>";printf("<td>%s</td><td>%s</td>", $vendedor_anterior, $produtos);echo "</tr>";(...)Espero ter ajudado. Editado Julho 21, 2008 por Leo Medina Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Skin_
Olá pessoal,
considerem as tabelas:
Eu preciso colocar em uma tabela todas as mercadorias vendidas por vendedores com nome começando com 'J'; A tabela precisaria ficar assim: Ou seja, todas as mercadorias de cada vendedor encontrado precisam ficar na mesma linha Não estou com problemas com a consulta.Não sei como fazer para percorrer os registros da consulta de modo a organizar as informações conforme o exemplo de tabela.
Alguém poderia me ajudar?
Valeu!
Editado por Skin_Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.