Page 1 of 1

relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 2:17 pm
by kpidata
Estimados amigos, como puedo realizar lo siguiente en Mysql.

Así lo hago en DBF, en donde los archivos Vta_Cot1 se relaciona con Tab_Cte, por el campo común entre ellos rut_cte..

Set Relation to Vta_Cot1->Cte_Cot into Tab_Cte

oCol2 := oBrw2:AddCol()
oCol2:bStrData := { || Transform(Vta_Cot1->Nro_Cot,"99-99-999") }
oCol2:cHeader := "Cotizacion"

oCol2 := oBrw2:AddCol()
oCol2:bStrData := { || Tab_Cte->Raz_Cte }
oCol2:cHeader := "Nombre Cliente"

Re: relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 2:20 pm
by wmormar
SELECT a.*, b.* FROM vta_cot1 as A INNER JOIN tab_cte AS b ON b.rut_ce = a.rut_ce

Re: relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 2:36 pm
by kpidata
Te agradezco la respuesta..

pero la hago mas difícil... si antes debo hacer esto..

cVta_Cot1:=xServer:Query("SELECT * FROM vta_cot1 WHERE nro_cot >='"+Str(cFolio1)+"' and nro_cot<='"+Str(cFolio1)+"' ORDER BY nro_cot")
que era lo que hacia con

Select 90
Set Order to 1
Vta_Cot1->(OrdScope(0, cFolio1 ))
Vta_Cot1->(OrdScope(1, cFolio2 ))
go top

y aca recien realizaba... el set relation...


mis diculpas... estoy recien viendo Mysql.. y aunque he estudiado el tema aun me cuesta visualizarlo... ahh estoy trabajando con tdolphin..

Atte.,

Re: relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 2:40 pm
by wmormar
cVta_Cot1:=xServer:Query("SELECT a.*, b.* FROM vta_cot1 AS a INNER JOIN tab_cte AS b ON b.rut_ce = a.rut_ce WHERE a.nro_cot >='"+Str(cFolio1)+"' and a.nro_cot<='"+Str(cFolio1)+"' ORDER BY a.nro_cot")

Re: relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 3:38 pm
by kpidata
Te pasaste... amigo gracias...

Re: relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 5:21 pm
by carlos vargas
solo algunas consideraciones.
Code: Select all  Expand view
cVta_Cot1:=xServer:Query("SELECT a.*, b.* FROM vta_cot1 AS a INNER JOIN tab_cte AS b ON b.rut_ce = a.rut_ce WHERE a.nro_cot >='"+Str(cFolio1)+"' and a.nro_cot<='"+Str(cFolio1)+"' ORDER BY a.nro_cot")


en este caso, el indicar que te traeras todos los campos de la tabla a, y todos los campos de la tabla b en la consulta no es lo mejor, ni lo mas indicado. mas incluso si hay campos del mismo nombre en ambas tablas, por lo que deberas tener el cuidado de realizar el cambio de nombre en la consulta.
lo adecuado es especificar cuales columnas te traeras, y en caso de que existan columnas con nombre iguales en ambas tablas deberas usar " field as fielname", por ejemplo
Code: Select all  Expand view
cVta_Cot1:=xServer:Query("SELECT a.nro_cot, a.code, a.name, a.age, a.dob, b.code as othername, b.address, b.city, c.state FROM vta_cot1 AS a INNER JOIN tab_cte AS b ON b.rut_ce = a.rut_ce WHERE a.nro_cot >='"+Str(cFolio1)+"' and a.nro_cot<='"+Str(cFolio1)+"' ORDER BY a.nro_cot")


y eso que asumimos que por cada fila de datos en b debe haber una fila de datos en a. por que dbf en algunas ocaciones no es asi. para esos casos en sql deberas usar outer join, left join, rigth join.

salu2
carlos vargas

Re: relacionar dos tablas.

PostPosted: Wed Oct 11, 2017 11:36 pm
by joseluisysturiz
Lo mejor seria usar LEFT JOIN, ya que el INNER seria mas que todo para unirla, te recomiendo que uses algun administrador de base de datos...como NAVICAT, HeidiSQL, phpMyAdmin, etc, con el asistente para hacer tus concultas, asi puedes ver en linea que informacion te saldra del listado y luego simplemente copias tu sentencia a tu codigo, cualquier duda o consulta, por aca andamos, saludos... :shock: