ROSOLVIDO - Inserindo dados de uma tabela em outra - RESOLVIDO - Com a ajuda do amigo Jailton

Boa tarde a todos!
Após criar um formulário de controle, estou a dias tentando inserir dados de uma tabela em outra, e como já não estou conseguindo enxergar onde posso estar errando, venho pedir a ajuda de vocês.
O problema é o seguinte: estou lendo os dados da tabela1 e tentando inserir na tabela2, acontece que as tabelas tem estrutura diferente, segue:

TABELA01:
Id nu_inicial codigo apresentante qtd
//------------------------------------------------------------------------------------------------------------------------
1 44128 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
2 44129 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
3 44130 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
4 44131 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
5 44132 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
6 44133 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
7 44134 774 PROCURADORIA GERAL DA UNIAO - PGU 1
8 44135 A63 PROCURADORIA GERAL DO MUNICIPIO DE NITEROI 1
9 44136 A63 PROCURADORIA GERAL DO MUNICIPIO DE NITEROI 1
10 44137 A63 PROCURADORIA GERAL DO MUNICIPIO DE NITEROI 1
11 44138 C86 PROCURADORIA GERAL FEDERAL - INMETRO 1
12 44139 C86 |PROCURADORIA GERAL FEDERAL - INMETRO 1
13 44140 F20 PET-X COMERCIO DE RACOES LTDA 1
14 44141 P76 PREFEITURA MUNICIPAL DE MARATAIZES 1
15 44142 033 BANCO SANTANDER (BRASIL) S.A. 1
16 44143 033 SANTANDER (BRASIL) S.A. 1
17 44144 033 BANCO SANTANDER (BRASIL) S.A. 1
18 4145 033 BANCO SANTANDER (BRASIL) S.A. 1
19 4146 033 BANCO SANTANDER (BRASIL) S.A. 1
20 44147 033 BANCO SANTANDER (BRASIL) S.A. 1
21 44148 237 BANCO BRADESCO SA. 1
22 44149 237 BRADESCO SA. 1
23 44150 237 BANCO BRADESCO SA. 1
24 44151 237 BANCO BRADESCO SA. 1
25 44152 041 BANCO DO ESTADO DO RIO GRANDE DO SUL S.A. 1
26 44153 041 BANCO DO ESTADO DO RIO GRANDE DO SUL S.A. 1
27 44154 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
28 44155 A96 PROCURADORIA DO MUNICIPIO DO RJ 1
29 44156 A96 PROCURADORIA DO MUNICIPIO DO RJ 1

TABELA02.
Id apresentante nu_inicial nu_final total
//--------------------------------------------------------------------------------------------------------------------------
1 PROCURADORIA DO MUNICIPIO DO RJ 44128 44133 6
2 PROCURADORIA GERAL DA UNIAO - PGU 44134 44134 1
3 PROCURADORIA GERAL DO MUNICIPIO DE NITEROI 44135 44137 3
4 PROCURADORIA GERAL FEDERAL - INMETRO 44138 44139 2
5 PET-X COMERCIO DE RACOES LTDA 44140 44140 1
6 MUNICIPAL DE MARATAIZES 44141 44141 1
7 BANCO SANTANDER (BRASIL) S.A. 44142 44147 6
8 BANCO BRADESCO SA. 44148 44151 4
9 BANCO DO ESTADO DO RIO GRANDE DO SUL S.A. 44152 44153 2
10 PROCURADORIA DO MUNICIPIO DO RJ 44154 44156 3

Reparem que o Código “A96” aparece no início e no final da TABELA01, porém com números diferentes, aí esta minha dificuldades em inserir os dados de uma tabela na outra.

Já tentei com FOR, FOREACH, WHILE e não consigo juntar os códigos em suas respectivas linhas.

Desde já agradeço a todos que poderem dar uma luz nesta enroscada que me meti.
Muito obrigado!
José Carlos
e-mail: jcobr.jcobr@gmail.com

Já pensou em aprender SQL?

SELECT
	tb1.codigo,
	tb1.apresentante,
	(SELECT MIN(tb2.nu_inicial) FROM teste AS tb2 WHERE tb2.codigo=tb1.codigo AND tb2.apresentante=tb1.apresentante) AS nu_inicial,
	(SELECT MAX(tb2.nu_inicial) FROM teste AS tb2 WHERE tb2.codigo=tb1.codigo AND tb2.apresentante=tb1.apresentante) AS nu_final,
	COUNT(*) AS qtd
FROM
	teste AS tb1
GROUP BY
	tb1.codigo,
	tb1.apresentante	
2 Curtidas

Prezado Jailton, bom dia!
Obrigado por responder, realmente preciso estudar mais a linguagem SQL, seguirei seu conselho o mais rápido possível.
Mesmo assim, creio que não fui muito claro em minha dúvida, o que preciso na verdade é percorrer todo o conteúdo da tabela 01 e inserir na tabela 2 (que sempre estará vazia). Se eu usar um select na tabela1 com Group By, como no exemplo, o código A96 não será inserido na tabela2 em duas linhas diferentes e preciso que os dados inseridos fiquem assim:

1 - PROCURADORIA DO MUNICIPIO DO RJ - 44128 - 44133 - 6
2 - .PROCURADORIA GERAL DA UNIAO
3 - PROCURADORIA DO MUNICIPIO DO MUNICIPIO DE NITEROI
4 - PROCURADORIA GERAL FEDERAL - INMETRO
5 - PET-X COMERCIO
6 - BANCO BRADESCO
7 - BANCO DO ESTADO DO RIO GRANDE DO SUL
8 - PROCURADORIA DO MUNICIPIO DO RJ - 44154 - 44156 - 3

Agradeço seu retorno.

Revisa a lógica que você quer, como você quer separar os últimos 3 registros automaticamente se eles são idênticos aos 6 primeiros.

Jailton, mais uma vez obrigado por sua atenção.
Entendo perfeitamente o que você colocou, porém, nem sempre as coisas estou sob nosso controle.
A situação é que esses códigos são fixos e fornecidos pelos clientes e quem os gera em arquivo .txt, não seguem nenhum tipo de regra, fazem da forma como eles vão chegando, por este motivo, os códigos (qualquer um deles) podem aparecer em várias linhas diferentes.
Em minha tabela 2 eu coloquei o Id como chave primaria exatamente poque os códigos e apresentantes se repetem várias vezes por arquivo enviado.
Foi exatamente por este motivo que fiquei travado neste problema.
Já solicitei à empresa que nos fornece o arquivo texto, porém eles não tem como listar os apresentantes todos em sequencia, são várias pessoas que recebem em diferentes momentos do dia.
Com tudo, valeu pelo seu tempo e pela sua atenção.
Tenha um bom dia e muito obrigado.

Ok se quiser criar os grupos por ‘codigo’ pela ordem de leitura e separar acumulando a qtde.

Pode usar este código:

/* Macro sc_select */

$sql ="
SELECT
    nu_inicial,
    codigo,
	apresentante
FROM
	teste
ORDER BY
	id
";

sc_select(meus_dados, $sql);

/* Erro no select */
if ({meus_dados} === false) {
    // Sua Base + _erro
	sc_error_message("Ocorreu um erro no acesso ao</br>banco de dados: $sql.</br>");
}
else {

	/* Inclua aqui sua rotina de processamento */

	// Qtde de Registros Retornados.
	$_Qtde_Registros=$meus_dados->RecordCount();

    if ($meus_dados->EOF) {

        // sc_error_message("Nenhum valor foi retornado pelo banco.</br>");
		
        // CONTINUA...

	} else {
		
			$_Numero_Inicial = 0;
		    $_Numero_Final = 0;
		    $_ApresentanteCodigo = '';
		    $_ApresentanteNome = '';
		    $_Qtde = 0;

			while (!$meus_dados->EOF) {
				
					$_nu_inicial = $meus_dados->fields[0];
					$_codigo = $meus_dados->fields[1];
					$_apresentante = $meus_dados->fields[2];
				
					if ($_ApresentanteCodigo<>$_codigo) {
						
						if ($_Numero_Final>0) {
							echo $_ApresentanteNome.' - '.$_Numero_Inicial. ' - '.$_Numero_Final.' - '.$_Qtde."</br>";
						}
						
						$_Numero_Inicial = $_nu_inicial;
						$_ApresentanteCodigo = $_codigo;
						$_ApresentanteNome = $_apresentante;
						$_Qtde = 1;
					} else {
						$_Numero_Final = $_nu_inicial;
						$_Qtde++;						
					}				

					// Avança para o próximo registro do BANCO DE DADOS.
					$meus_dados->MoveNext();

			} // while (!$meus_dados->EOF)
		
			if ($_Numero_Final>0) {
				echo $_ApresentanteNome.' - '.$_Numero_Inicial. ' - '.$_Numero_Final.' - '.$_Qtde."</br>";
			}


	} // if ($meus_dados->EOF)

	// Limpa tudo até a conexão
	$meus_dados->Close();

} // sc_select(meus_dados,    ** Nao deixar aspas aqui...

Jailton, vou testar conforme você indicou e dando tudo certo posto o resultado colocando como resolvido no tópico.
Mais uma vez, obrigado.

Jailton, funcionou muito bem com a sua solução, mais uma vez muitíssimo obrigado pela sua ajuda.

2 Curtidas