Skip to main content
Announcements
Marching toward a simplified navigation! READ ON
cancel
Showing results for 
Search instead for 
Did you mean: 
alexis_garcia
Creator II
Creator II

Unión entre tablas

Hola a todos

Tengo una duda que no sé cómo resolver!

Por una parte tengo una tabla con:

TABLA 1:

EDIFICIO    PERIODO       NUMERO

      1                P1               24

      2                 P2               34

      3                 P3               17

Y otra tabla con:

TABLA 2:

EDIFICIO     VALOR_P1     VALOR_P2     VALOR_P3

     1                    54                  47                   12

     2                    14                  67                   46

     3                    24                  34                   57

¿Cómo puedo hacer para unir el campo PERIODO de TABLA_1 con los 3 campos VALOR_P1,VALOR_P2 ,VALOR_P3?

Necesito unirlos para hacer varios cálculos.

No sé cómo enfocarlo!

Gracias.

Un saludo.

9 Replies
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Alexis:

Usa JOIN aquí tienes una muestra JOIN sample

Saludos

Joaquín

jvitantonio
Luminary Alumni
Luminary Alumni

Hola Alexis, lo puedes hacer de la siguiente manera:

Tabla:

LOAD * FROM Tabla1.qvd (qvd)

;

INNER JOIN

LOAD * FROM Tabla2.qvd (qvd)

;

Saludos

Juan

ramoncova06
Specialist III
Specialist III

tienes que hacer un for contando los campos de tabla Tabla2 y luego hacer un join

  Tabla1:

  load * Inline

  [EDIFICIO,PERIODO,NUMERO

  1,P1,24

  2,P2,34

  3,P3,17];

  Tabla2:

  load * Inline

  [EDIFICIO, VALOR_P1, VALOR_P2, VALOR_P3

  1,54,47,12

  2,14,67,46

  3,24,34,57];

  for Contador = 2 to  NoOfFields('Tabla2')

  vCampo = FieldName($(Contador),'Tabla2')

  vPeriodo = SubField('$(vCampo)','_',2);

  Trace nombre de campo $(vPeriodo);

  ValorEdificio:

  load

  EDIFICIO,

  $(vCampo) as Valor,

  '$(vPeriodo)' as PERIODO

  Resident Tabla2;

  next Contador

  left join (Tabla1)

  load

  *

  Resident ValorEdificio;

  drop table Tabla2;

alexis_garcia
Creator II
Creator II
Author

Hola a todos,

Gracias por vuestra ayuda!

Pero el problema que tengo es que en Tabla1 el campo PERIODO es solo uno, pero en Tabla2 tengo 3 campos ( VALOR_P1, VALOR_P2 y VALOR_P3 ) y ese campo se debe relacionar con esos 3.

Debería hacer una Crosstable en Tabla2 para hacer que VALOR_P1, VALOR_P2 y VALOR_P3 se conviertan en un solo campo y así poder unirlo con PERIODO de Tabla1?

Gracias.

Un saludo.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Alexis:

Ufff me ha costado pero creo que lo he entendido, la CrossTable generará los datos como tú quieres

CrossTable ( ... )

LOAD ...

          VALOR_P1 as P1,

          VALOR_P2 as P2,

          VALOR_P3 as P3


Esta es la idea, pule tú la forma


Saludos

Joaquín

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Alexis:

Cómo tienes este tema ?

Saludos

Joaquín

ecolomer
Master II
Master II

Debes utilizar una JOIN

Puedes consultar el documento adjunto.

rteco0131
Contributor II
Contributor II

Hola @alexis.garcia

Podrías, por favor, indicar el obejtivo final? La tabla que necesitas llegar?


Saludos.

rubenmarin

Hola Alexis, no sé si te refieres a esto:

TABLA2:

CrossTable(PERIODO, Datos)

LOAD EDIFICIO,

     VALOR_P1 as P1,

     VALOR_P2 as P2,

     VALOR_P3 as P3

FROM

Libro1.xls

(biff, embedded labels, table is Hoja1$);

TABLA1:

Right Join(TABLA2)

LOAD * Inline [

EDIFICIO,PERIODO,NUMERO

1,P1,24

2,P2,34

3,P3,17

];

Devuelve:

---------------------------------------------------

Supongo que no te refieres a la opción más simple:

TABLA1:

LOAD * Inline [

EDIFICIO,PERIODO,NUMERO

1,P1,24

2,P2,34

3,P3,17

];

TABLA2:

Left Join (TABLA1)

LOAD EDIFICIO,

     VALOR_P1,

     VALOR_P2,

     VALOR_P3

FROM

Libro1.xls

(biff, embedded labels, table is Hoja1$);

Devolvería: