Ir para conteúdo

POWERED BY:

Arquivado

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

maradsjc

Problema desconhecido ao passar consulta SQL para PHP

Recommended Posts

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

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
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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.