krinosx 0 Denunciar post Postado Setembro 27, 2005 Ola pessoal, estou com um problema que está consumindo meus neurônios e não estou achando um algoritimo coerente para acertar isso. Vamos ao problema:Tenho uma matriz que relaciona um GRUPO DE PRODUÇÃO e NUMEROS DE PEÇAS produzidas por cada grupo. No entanto existe a possibilidade de mais de um grupo trabalhar junto em cada peça, ou seja, cada peça pode ser produzida por 1,2 ou N grupos simultaneamente. O meu objetivo é montar uma listagem com o seguinte formato:Grupoa A, B, C: - Peça 1 - Peça 2 - Peça 3Grupo A, B - Peça 4 - Peça 5Grupo B, C - Peça 6 - Peça 8Grupo A - Peça 7Grupo B - Peça 10, - Peça 11, - Peça 13Entenderam? ou seja, quero ver as peças que os grupos produziram junto e as que cada grupo produziu sozinho... ta f*** pra conseguir resolver essa parada. A matriz que tenho segue abaixo... será que alguem consegue resolver?Array( [iD_PECAS] => Array ( [0] => 1863 [1] => 1990 [2] => 1996 [3] => 1997 [4] => 1998 [5] => 1999 [6] => 2017 [7] => 2046 [8] => 2109 [9] => 2110 [10] => 2111 [11] => 2123 [12] => 2124 [13] => 2128 [14] => 2130 [15] => 2131 [16] => 2132 [17] => 2132 [18] => 2133 [19] => 2133 [20] => 2134 [21] => 2134 ) [uNIDADE_PRODUCAO] => Array ( [0] => "A" [1] => "A" [2] => "B" [3] => "B" [4] => "B" [5] => "B" [6] => "C" [7] => "A" [8] => "B" [9] => "B" [10] => "B" [11] => "B" [12] => "B" [13] => "B" [14] => "C" [15] => "D" [16] => "E" [17] => "F" [18] => "E" [19] => "F" [20] => "E" [21] => "F" ))Bom se alguem conseguir resolver essa parada me mande um e-mail... krinosx@gmail.com vou ficar muito agradecido. Compartilhar este post Link para o post Compartilhar em outros sites
felipe_rezende 0 Denunciar post Postado Setembro 27, 2005 http://forum.imasters.com.br/index.php?showtopic=148180 Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Setembro 27, 2005 Realmente daria um desafio interessante. Exigiria bastante de lógica por parte dos corajosos, muito legal... como agora o formato de desafios de PHP esta diferente, visando criar desafios mais ageis, acho que este já poderia até entrar como tema para avaliação em novas edições. Compartilhar este post Link para o post Compartilhar em outros sites
krinosx 0 Denunciar post Postado Setembro 27, 2005 Realmente daria um desafio interessante. Exigiria bastante de lógica por parte dos corajosos, muito legal... como agora o formato de desafios de PHP esta diferente, visando criar desafios mais ageis, acho que este já poderia até entrar como tema para avaliação em novas edições. <{POST_SNAPBACK}> Bom sim, mas de qualquer forma se alguem puder me ajudar com esse desafio.. é um problema da minha vida real que estou tentando resolver e não consigo..... se alguem poder ajudar... fico grato. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Setembro 27, 2005 O felipe já postou uma possivel solução... não serve? Compartilhar este post Link para o post Compartilhar em outros sites
krinosx 0 Denunciar post Postado Setembro 27, 2005 O felipe já postou uma possivel solução... não serve? <{POST_SNAPBACK}> Então.. a solução dele é um pouco restrita, já que ele limitou a quantidade de grupos e peças.... Tanto os grupos quanto as peças são dinamicas, ou seja... podem ser N combinações de unidades de produção produzindo N peças... então a solução dele resolveria para uma matriz fixa... o que não é o caso.... Eu estou elaborando uma solução aqui mas misturando vários acessos ao banco e uniões de matrizes... acho que vai até funcionar.. mas a performance disso.. não sei como vai ser... Estou trabalhando nisso des de manhã.. e ainda não terminei.. acho que vou deixar para terminar amanhã... Se até lá ninguem conseguir bolar algo que resolva eu posto aqui no forum a solução que cheguei para vocês poderem criticar e me ajudar com a performance.... Mas a duvida continua em pé... se alguem tiver mais idéias... postem por favor... (ps. Desculpem pelo FLOOD no forum, postei em vários lugares diferentes... não sabia que não era legal fazer isso.. sou meio que principiante em foruns... ) Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Setembro 27, 2005 Sim... compreensivel. Me diz uma coisa, esses grupos estão em uma estrutura de banco de dados? Se sim, posso tentar algo com um select. Compartilhar este post Link para o post Compartilhar em outros sites
krinosx 0 Denunciar post Postado Setembro 27, 2005 Sim sim.. estão em uma estrutura de banco de dados.A matriz que coloquei como exemplo é a tabela retirada do banco de dados ou seja.. a tabela seria mais ou menos assim:(tabela: PRD_UNIPECA) UNI_PROD | ID_PECA ----------------------- "A" | 1863 "A" | 1990 "B" | 1996 "B" | 1997 "B" | 1998 "B" | 1999 "C" | 2017 "A" | 2046 "B" | 2109 "B" | 2110 "B" | 2111 "B" | 2123 "B" | 2124 "B" | 2128 "C" | 2130 "D" | 2131 "E" | 2132 "F" | 2132 "E" | 2133 "F" | 2133 "E" | 2134 "F" | 2134Caso te de mais idéias.....Detalhe.. utilizo o ORACLE10g. então pode ficar a vontade para utilizar subSelect e todas as funções disponiveis que você conheça do Oracle.Obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Setembro 28, 2005 Não consegui imaginar como ficaria a query, portanto fiz trabalhando com Array.Veja o código: <pre><?php$SQL = "SELECT * FROM producao";$rConsulta = mysql_query($SQL) or die(mysql_error());while ($rs = mysql_fetch_assoc($rConsulta)){ extract($rs); $aProducao[$unid_prod][] = $id_peca;}/** * @ Agrupando unid_prod por peças**/foreach ($aProducao as $unid_prod => $aPecas){ foreach ($aPecas as $id_peca) { if (in_array($id_peca, $aProducao[$unid_prod])) { $aProd[$id_peca][] = $unid_prod; } }}/** * @ Criando Array para ordenar por agrupamento*/foreach (array_values($aProd) as $values){ $aUnids[] = join("-", $values);}sort($aUnids);/** * @ Listando unid_prod e suas respectivas peças*/foreach (array_unique($aUnids) as $unid_prod){ print "<h2>{$unid_prod}</h2>"; foreach ($aProd as $id_peca => $unids) { if (join("-", $unids) == $unid_prod) { print "- {$id_peca}\n"; } }}?>Resultado:A- 28- 20- 484A-B- 100A-B-E- 57A-C- 120A-D-E-Y- 50B- 1E- 5165V- 351[]'s Compartilhar este post Link para o post Compartilhar em outros sites
krinosx 0 Denunciar post Postado Setembro 28, 2005 Ola amigos, CODEMAN.. cara.. valeu mesmo.. era exatamente isso que eu tava precisando.... não tava conseguindo ver uma maneira de fazer e você me esclareceu bastante... hehehe sou principiante com matrizes e nem conhecia a função extract... Mas OBRIGADO mesmo cara... valeu valeu.. ficou perfeito, tive apenas que fazer algumas alterações para adaptar ao oracle (funções de SQL só) mas do resto.. ta tudo "supinpa" hehehe obrigado! Até mais! (segue o codigo para vocês verem como ficou a versão final do algoritimo) $SQL = " SELECT PRD_UNP_ID, PRD_EDC_ID FROM UNIPRODUCAO ";$rConsulta = oci_parse($conexao,$SQL);ociexecute($rConsulta);$nrows = oci_fetch_all($rConsulta, $rs); for($z=0;$z<$nrows;$z++)//while($rs = mysql_fetch_assoc($rConsulta)){ extract($rs); $aProducao[$PRD_UNP_ID[$z]][] = $PRD_EDC_ID[$z];}/*** @ Agrupando unid_prod por peças**/foreach ($aProducao as $unid_prod => $aPecas){ foreach ($aPecas as $id_peca) { if (in_array($id_peca, $aProducao[$unid_prod])) { $aProd[$id_peca][] = $unid_prod; } }}/*** @ Criando Array para ordenar por agrupamento*/foreach (array_values($aProd) as $values){ $aUnids[] = join("-", $values);}sort($aUnids);/*** @ Listando unid_prod e suas respectivas peças*/foreach (array_unique($aUnids) as $unid_prod){ print "<h2>{$unid_prod}</h2>"; foreach ($aProd as $id_peca => $unids) { if (join("-", $unids) == $unid_prod) { print "- {$id_peca}\n"; } }} Compartilhar este post Link para o post Compartilhar em outros sites