FoxPro/Visual FoxPro - Unir tablas de Base de Datos Mysql

 
Vista:
sin imagen de perfil

Unir tablas de Base de Datos Mysql

Publicado por Ruben Dario (57 intervenciones) el 30/10/2014 18:58:33
Buenas tardes

Tengo tres tablas identicas en mySQL


---------Tabla1
Codigo, Cantidad
001----------2
002----------2
004----------2
005----------2

--------Tabla2

Codigo, Cantidad
001----------2
002----------2
003----------2

--------Tabla3
Codigo, Cantidad
001----------2
002----------2
006----------2

LO que necesito es en el Query de MYSQL o en visual fox, poner una sentencia que en la TABLA1 agregue los codigos
de las otras tablas que no tengo en la TABLA1 Y QUE SI EXISTE QUE SUME EL LA TABLA 1 los codigos repetidos de TABLA 2 y TABLA 3

Es posible hacer eso, desde ya muchas gracias

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauricio Antonio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Unir tablas de Base de Datos Mysql

Publicado por Mauricio Antonio (1541 intervenciones) el 30/10/2014 21:46:31
Corre este PRG y comprueba los resultados
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
*
*--- Unir 3 tablas en una sola (la primera)
CLOSE TABLE ALL
USE tabla1 IN 0 ORDER codigo
USE tabla2 IN 0 ORDER codigo
USE tabla3 IN 0 ORDER codigo
* Parado en tabla1, aca se añadiran los no existentes
SELE tabla2
SCAN
	IF SEEK(tabla2.codigo,'tabla1')
		REPLACE cantidad WITH cantidad + tabla2.cantidad IN tabla1
	ELSE
		INSERT INTO tabla1(codigo,cantidad) VALUES(tabla2.codigo,tabla2.cantidad)
	ENDIF
ENDSCAN
* Ahora se actualizaran de la tabla3
SELE tabla3
SCAN
	IF SEEK(tabla3.codigo,'tabla1')
		REPLACE cantidad WITH cantidad + tabla3.cantidad IN tabla1
	ELSE
		INSERT INTO tabla1(codigo,cantidad) VALUES(tabla3.codigo,tabla3.cantidad)
	ENDIF
ENDSCAN
*
CLOSE TABLE ALL
RETURN
PD. A las 3 tablas crear el indice por codigo, para ordenarlos. Es para vfp.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Unir tablas de Base de Datos Mysql

Publicado por Ruben (57 intervenciones) el 01/11/2014 12:25:18
Buenos Días Mauricio

Antes que nada muchas gracias por tu respuesta

Te comento que no me funciona por que me olvide comentar que la BD lo tengo en MYSQL, y me da error esto es lo que modifique el código que mas necesito cambiar para que funcione

conexion = SQLConnect('conexion')

ok = sqlexec(conexion,'select * from producto','producto')
ok = sqlexec(conexion,'select * from producto2','producto2')
ok = sqlexec(conexion,'select * from producto3','producto3')

*!* CLOSE TABLE ALL
*!* USE PRODUCTO IN 0 ORDER codigo
*!* USE producto2 IN 0 ORDER codigo
*!* USE procuto3 IN 0 ORDER codigo
* Parado en tabla1, aca se añadiran los no existentes
SELE producto2
SCAN
IF SEEK(producto2.codigo,'producto')
REPLACE cantidad WITH cantidad + producto2.cantidad IN prodcuto
ELSE
INSERT INTO producto(codigo,cantidad) VALUES(producto2.codigo,producto2.cantidad)
ENDIF
ENDSCAN
* Ahora se actualizaran de la tabla3
SELE producto3
SCAN
IF SEEK(producto3.codigo,'producto')
REPLACE cantidad WITH cantidad + producto3.cantidad IN producto
ELSE
INSERT INTO producto(codigo,cantidad) VALUES(producto3.codigo,producto3.cantidad)
ENDIF
ENDSCAN
*
CLOSE TABLE ALL
RETURN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Unir tablas de Base de Datos Mysql

Publicado por Ruben (57 intervenciones) el 01/11/2014 15:07:58
Este es mi nuevo codigo pero no me hace ni el update ni el insert

conexion = SQLConnect('conexion')
ok = sqlexec(conexion,'select * from producto order by codigo','producto')
INDEX ON codigo TO producto
ok2 = sqlexec(conexion,'select * from producto2 order by codigo','producto2')
INDEX ON codigo TO producto2
ok3 = sqlexec(conexion,'select * from producto3 order by codigo','producto3')
INDEX ON codigo TO producto3
SET STEP ON
* Parado en tabla1, aca se añadiran los no existentes
SELE producto2
SCAN
IF SEEK(producto2.codigo,'producto')
*REPLACE cantidad WITH cantidad + producto2.cantidad IN producto
ok = sqlexec(conexion, "UPDATE producto, producto2 SET producto.cantidad = (producto2.cantidad + producto.cantidad) WHERE producto.codigo= producto2.cantidad")
ELSE
ok = sqlexec(conexion, "INSERT INTO producto(codigo,cantidad) VALUES(producto2.codigo,producto2.cantidad")
ENDIF
ENDSCAN
* Ahora se actualizaran de la tabla3
SELE producto3
SCAN
IF SEEK(producto3.codigo,'producto')
REPLACE cantidad WITH cantidad + producto3.cantidad IN producto
ELSE
INSERT INTO producto(codigo,cantidad) VALUES(producto3.codigo,producto.cantidad)
ENDIF
ENDSCAN
*
CLOSE TABLE ALL
RETURN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar