How to insert selecting from two different tables?

0
TABELA 1
- ID
- IMOVEL
- CODIGO
- IMAGEM_G  <----- nessa tabela este dado é vazio.
- IMAGEM_P

TABELA 2
- ID
- IMOVEL    <----- nessa tabela este dado é vazio.
- CODIGO    <----- nessa tabela este dado é vazio.
- IMAGEM_G
- IMAGEM_P

I need a TABELA 3 like this:

- ID        <----- idêntico nas tabelas
- IMOVEL    <----- ID TABELA 1
- CODIGO    <----- ID TABELA 1
- IMAGEM_G  <----- ID TABELA 2
- IMAGEM_P  <----- idêntico nas tabelas

Can you help me mount this INSERT to TABELA 3 ?

    
asked by anonymous 19.01.2015 / 19:09

2 answers

3

You can INSERT SELECT with data:

INSERT INTO 'TABELA 3' (ID, IMOVEL, CODIGO, IMAGEM_G, IMAGEM_P)
SELECT t1.ID, t1.IMOVEL, t1,codigo, t2.IMAGEM_G, t1.IMAGEM_P FROM 'TABELA 1' t1
INNER JOIN 'TABELA 2' t2 ON t1.id = t2.id

Considering that ID is identical in both tables and their data is consistent.

    
19.01.2015 / 19:42
3

Make a select with php to get the ids of Tabela1 and, within a loop, run query below.

INSERT INTO Tabela3 (id, imovel, codigo, imagem_g, imagem_p)
    VALUES (
        (SELECT id FROM Tabela1 WHERE id = $id),
        (SELECT imovel FROM Tabela1 WHERE id = $id),
        (SELECT codigo FROM Tabela1 WHERE id = $id),
        (SELECT imagem_g FROM Tabela2 WHERE id = $id),
        (SELECT imagem_p FROM Tabela1 WHERE id = $id)
    )

I advise you to put a LIMIT in the amount of records that will be inserted at a time so as not to overload the bank.

Another way would be, within the ids loop of Tabela1 get the data via a single query and then insert them into Tabela3 .

SELECT t1.id, t1.imovel, t1.codigo, t2.imagem_g, t1.imagem_p
    FROM Tabela1 t1
    JOIN Tabela2 t2 ON t2.id = t1.id
        WHERE t1.id = $id

INSERT INTO Tabela3 (id, imovel, codigo, imagem_g, imagem_p)
    VALUES ($res->id, $res->imovel, $res->codigo, $res->imagem_g, $res->imagem_p)
    
19.01.2015 / 19:17