Ir para conteúdo
Fórum Script Brasil
  • 0

duvidas com inner join


Rudimar

Pergunta

ta meio estranho a instrucao sql abaixo utilizando inner join. Se o resultado da instrucao deve retornar 2 registros, ele retorna 1, se o resultado da instrucao deve retornar 1 registro, ele retorna nenhum. Ou seja, retorna sempre 1 a menos do que deveria retornar.

$sql = "select empresas.codigo_empresa, empresas.razao_social, empresas.endereco, empresas.cnpj,

funcionarios.codigo_empresa_funcionarios, funcionarios.codigo_funcionario, funcionarios.nome_funcionario,

funcionarios.cargo, funcionarios.depto, recolhimentos.codigo_funcionario_recol, recolhimentos.codigo_empresa_recol,

recolhimentos.ano_mes, recolhimentos.irpf, recolhimentos.inss, recolhimentos.fgts, salarios.codigo_empresa_salarios,

salarios.codigo_funcionario_salarios, salarios.salario,salarios.comissoes, salarios.ano_mes, salarios.depir,

salarios.depsal, salarios.premios, salarios.repouso, salarios.salario_familia, salarios.salario_maternidade, salarios.vr,

salarios.vt, salarios.adiantamento_salario, salarios.nome_provento, salarios.valor_provento, salarios.dias_trabalhados from(empresas inner join funcionarios on

funcionarios.codigo_empresa_funcionarios = empresas.codigo_empresa) inner join salarios on

salarios.codigo_funcionario_salarios = funcionarios.codigo_funcionario inner join recolhimentos on

recolhimentos.codigo_funcionario_recol = salarios.codigo_funcionario_salarios where empresas.codigo_empresa = '" .

$codigo_empresa . "' and salarios.ano_mes = '" . $ano_mes . "' and (" .$sql2 . ") order by funcionarios.nome_funcionario

asc";

abaixo segue uma instrucao sql em tempo de execucao:

select empresas.codigo_empresa, empresas.razao_social, empresas.endereco, empresas.cnpj, funcionarios.codigo_empresa_funcionarios, funcionarios.codigo_funcionario, funcionarios.nome_funcionario, funcionarios.cargo, funcionarios.depto, recolhimentos.codigo_funcionario_recol, recolhimentos.codigo_empresa_recol, recolhimentos.ano_mes, recolhimentos.irpf, recolhimentos.inss, recolhimentos.fgts, salarios.codigo_empresa_salarios, salarios.codigo_funcionario_salarios, salarios.salario,salarios.comissoes, salarios.ano_mes, salarios.depir, salarios.depsal, salarios.premios, salarios.repouso, salarios.salario_familia, salarios.salario_maternidade, salarios.vr, salarios.vt, salarios.adiantamento_salario, salarios.nome_provento, salarios.valor_provento, salarios.dias_trabalhados from(empresas inner join funcionarios on funcionarios.codigo_empresa_funcionarios = empresas.codigo_empresa) inner join salarios on salarios.codigo_funcionario_salarios = funcionarios.codigo_funcionario inner join recolhimentos on recolhimentos.codigo_funcionario_recol = salarios.codigo_funcionario_salarios where empresas.codigo_empresa = '13001' and salarios.ano_mes = '200902' and ( funcionarios.codigo_funcionario = 1256 or funcionarios.codigo_funcionario = 1255) order by funcionarios.nome_funcionario asc
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

bem, o problema foi o seguinte:

eu tinha o:

while($valor = mysql_fetch_array)(

codigos

}

Mas antes deste while eu havia colocado antes novamente o $valor = mysql_fetch_array($res). Embora não entenda porque, mas a repeticao do $valor_mysql_fetch_array($res) me suprimiu o primeiro registro da lista. Ate cheguei a fazer um teste, coloquei varias vezes, assim:

$valor = mysql_fetch_array($res);

$valor = mysql_fetch_array($res);

$valor = mysql_fetch_array($res);

Cada vez que voce acrescenta uma linha de codigo desta ele suprimi um registro da lista...

porque eu não sei....

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...