SELECT em tabelas sem relação

Seguinte, eu tenho três tabelas e elas não tem nenhuma relação.
Eu preciso pegar os id’s de duas tabelas e e escrever em uma outra tabela (uma quarta tabela).

Os detalhes:
Em uma tabela eu tenho apenas os códigos CEST's e NCM's (cest_produto), nas outras duas eu tenho os ID's e também os códigos CEST's e NCM's (pgd.tb_cest e pgd.tb_ncm). Eu tenho que pegar os ID' s e jogar numa quarta tabela com as colunas ncm_id e cest_id (pgd.tb_ncm_cest). Alguém pode me ajudar?

Eu estava pensando dessa maneira:

SELECT DISTINCT 'INSERT INTO pgd.tb_ncm_cest (ncm_id, cest_id) VALUES (' || c.id || ', ' FROM pgd.tb_cest c WHERE CAST(c.codigo AS INTEGER) IN (SELECT cd_cest FROM cest_produto)

Dessa forma eu consigo pegar os ID's de CEST da tabela pgd.tb_cest, mas não consigo enxergar como pegar os ID's de NCM da tabela pgd.tb_ncm.

O arquivo .backup está em anexo.

ac_pegasus.backup (102,7 KB)

Você quer dizer “não há relacionamento estre as tabelas”, certo?

Mas pelo que entendi da sua dúvida, mesmo não havendo relacionamento entre estas tabelas, os IDs estão inseridos de modo que lhe permita compará-los.

De todo modo,a forma colocada por você não é a correta do ponto de vista prático nem didático.

Minha sugestão é que você crie um cursor em seu banco, execute e percorra pelos valores comparando os IDs e atualizando conforme a necessidade.

CREATE PROCEDURE curdemo()
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE a CHAR(16);
  DECLARE b, c INT;
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  OPEN cur1;
  OPEN cur2;

  read_loop: LOOP
    FETCH cur1 INTO a, b;
    FETCH cur2 INTO c;
    IF done THEN
      LEAVE read_loop;
    END IF;
    IF b < c THEN
      INSERT INTO test.t3 VALUES (a,b);
    ELSE
      INSERT INTO test.t3 VALUES (a,c);
    END IF;
  END LOOP;

  CLOSE cur1;
  CLOSE cur2;
END;

https://dev.mysql.com/doc/refman/8.0/en/cursors.html

Não seria usar inner joins ?