FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour relacionar dos tablas.
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
relacionar dos tablas.
Posted: Wed Oct 11, 2017 02:17 PM

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"

Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: relacionar dos tablas.
Posted: Wed Oct 11, 2017 02:20 PM

SELECT a., b. FROM vta_cot1 as A INNER JOIN tab_cte AS b ON b.rut_ce = a.rut_ce

William, Morales

Saludos



méxico.sureste
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
Re: relacionar dos tablas.
Posted: Wed Oct 11, 2017 02:36 PM

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.,

Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: relacionar dos tablas.
Posted: Wed Oct 11, 2017 02:40 PM

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")

William, Morales

Saludos



méxico.sureste
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
Re: relacionar dos tablas.
Posted: Wed Oct 11, 2017 03:38 PM

Te pasaste... amigo gracias...

Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: relacionar dos tablas.
Posted: Wed Oct 11, 2017 05:21 PM
solo algunas consideraciones.
Code (fw): Select all Collapse
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 (fw): Select all Collapse
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
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: relacionar dos tablas.
Posted: Wed Oct 11, 2017 11:36 PM

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:

Dios no estĂĄ muerto...



Gracias a mi Dios ante todo!

Continue the discussion