maradsjc 0 Denunciar post Postado Março 31, 2017 Pessoal bom dia, Estou desenvolvendo um pequeno sistema de relatórios e até a presente data tudo corria perfeitamente bem, porém tenho uma consulta feita diretamente em SQL que roda no SQL server de forma excelente, porém ao ser incluída em PHP acontece um evento estranho. Eis o SQL: select fa.fantasia, f.filial, v.codigo, v.pedido, fc.filial, faa.fantasia, pn.part_number, v.data from t_fantasias fa inner join t_filiais f on fa.codigo = f.fantasia inner join t_vendas v on v.distribuidor = f.codigo inner join t_filiais fc on fc.codigo = v.cliente inner join t_fantasias faa on faa.codigo = fc.fantasia inner join t_vendas_itens vi on vi.venda = v.codigo inner join t_part_numbers pn on pn.codigo = vi.part_number where f.razao_social like '%servishop%' and v.data between '01/03/2017' and '30/03/2017' Este SQL me mostra nome fantasia (distribuidor), filial (distribuidor), codigo (um número de protocolo que utilizamos), numero do pedido, filial (cliente), nome fantasia (cliente), part number do produto, data da venda! Perfeito. Eis o PHP: $query = "SELECT FA.$campo1, F.$campo2, V.$campo3, V.$campo4, FC.$campo17, FAA.$campo16, PN.$campo5, V.$campo6 FROM $tabela1 FA INNER JOIN $tabela2 F on FA.$campo7 = F.$campo8 INNER JOIN $tabela3 V on V.$campo9 = F.$campo10 INNER JOIN $tabela7 FC on FC.$campo18 = V.$campo11 INNER JOIN $tabela6 FAA on FAA.$campo19 = FC.$campo20 INNER JOIN $tabela4 VI on VI.$campo12 = V.$campo3 INNER JOIN $tabela5 PN on PN.$campo13 = VI.$campo14 WHERE F.$campo15 LIKE '%$RRT1%' AND V.$campo6 BETWEEN '$var1' AND '$var2'"; $consulta = mssql_query($query); $numRegistros = mssql_num_rows($consulta); echo "<table border='2' size='4'>"; echo "<TR><TD><B>Distribuidor</B></TD>"; echo "<TD><B>Filial</B></TD>"; echo "<TD><B>Cliente</B></TD>"; echo "<TD><B>Filial Cliente</B></TD>"; echo "<TD><B>Protocolo</B></TD>"; echo "<TD><B>Pedido</B></TD>"; echo "<TD><B>Part Number</B></TD>"; echo "<TD><B>Data Venda</B></TD></TR>"; if ($numRegistros!=0) { while ($cadaLinha = mssql_fetch_array($consulta)) { echo "<TD WIDTH=250>" .$cadaLinha[$campo1]."</TD>"; echo "<TD WIDTH=250>" .$cadaLinha[$campo2]."</TD>"; echo "<TD WIDTH=250>" .$cadaLinha[$campo16]."</TD>"; echo "<TD WIDTH=150>" .$cadaLinha[$campo17]."</TD>"; echo "<TD WIDTH=400>" .$cadaLinha[$campo3]."</TD>"; echo "<TD WIDTH=150>" .$cadaLinha[$campo4]."</TD>"; echo "<TD WIDTH=150>" .$cadaLinha[$campo5]."</TD>"; echo "<TD WIDTH=120>" .$cadaLinha[$campo6]."</TD></TR>"; } } } Ja esta consulta PHP com o mesmo select, repete o nome e filial do cliente no local onde deveria estar o nome e filial do distribuidor. Tentei com a consulta direta para verificar o resultado, mesma coisa, dai então transformei tudo em variável a fim de mostrar ao PHP a diferença entre uma e outra. Declarei as variáveis dessa forma: $tabela1 = "T_FANTASIAS"; $tabela2 = "T_FILIAIS"; $tabela3 = "T_VENDAS"; $tabela4 = "T_VENDAS_ITENS"; $tabela5 = "T_PART_NUMBERS"; $tabela6 = "T_FANTASIAS"; $tabela7 = "T_FILIAIS"; $campo1 = "fantasia"; //fantasias $campo2 = "filial"; //filiais $campo3 = "codigo"; //vendas $campo4 = "pedido"; //vendas $campo5 = "part_number"; //part numbers $campo6 = "data"; //vendas $campo7 = "codigo"; //fantasias $campo8 = "fantasia"; //filiais $campo9 = "distribuidor"; //vendas $campo10 = "codigo"; //filiais $campo11 = "cliente"; //vendas $campo12 = "venda"; //vendas itens $campo13 = "codigo"; //part numbers $campo14 = "part_number"; //vendas itens $campo15 = "razao_social"; //filiais $campo16 = "fantasia"; //faa $campo17 = "filial"; //fc $campo18 = "codigo"; //fc $campo19 = "codigo"; //faa $campo20 = "fantasia"; //fc Se alguém me mostrar uma luz, agradeço! Compartilhar este post Link para o post Compartilhar em outros sites
Maykel-ctba 233 Denunciar post Postado Março 31, 2017 Chegou a imprimir a consulta gerada com as variáveis para ver o que é retornado? var_dump($query); Cole o resultado direto no seu banco e veja se retorna algo próximo do esperado. Dica: Não use variáveis diretamente na consulta sem concatená-las. Dica 2: Use a tag CODE do fórum! É muito f*** ler os códigos direto na página assim. Mistura tudo com o texto. Compartilhar este post Link para o post Compartilhar em outros sites
maradsjc 0 Denunciar post Postado Março 31, 2017 37 minutos atrás, Maykel-ctba disse: Chegou a imprimir a consulta gerada com as variáveis para ver o que é retornado? var_dump($query); Cole o resultado direto no seu banco e veja se retorna algo próximo do esperado. Dica: Não use variáveis diretamente na consulta sem concatená-las. Dica 2: Use a tag CODE do fórum! É muito f*** ler os códigos direto na página assim. Mistura tudo com o texto. Obrigado pelas dicas! Ele imprime corretamente a consulta, sem alterações ou algo que esteja errada. A consulta foi primeiramente feita no SQL para que funcionasse e depois apenas passada para PHP. Apenas essa que deu problemas, pois tive que usar as mesmas tabelas com joins diferentes para receber os campos que precisava. O PHP não está entendo a diferença (aparentemente) entre os joins com tabelas iguais. No SQL roda perfeitamente! Compartilhar este post Link para o post Compartilhar em outros sites