Problemas con dos tablas con campos iguales

espiri
21 de Enero del 2002
Estoy leyendo una base de datos de Visual Fox Pro (VFP), y necesito mostrar información que existen en tres tablas:
Tabla OBSERVA tiene por ejemplo los campos (idobserva, idalumno, observa(es campo memo), fecha)
Tabla MAESTROS tiene los campos (idmaestros, nombre)
Tabla MATERIAS tiene los campos (idmaterias, idmaestros, nombre)

Existen dos campos iguales en dos tablas diferentes en base a el idalumno, ¿como puedo meter, los registros que existan de el campo observa.fecha, maestros.nombre, materias.nombre y observa.observa en una tabla de html. He intentado de varias formas y no me sale bien el despliegue de información por que en las columnas que se llaman de igual forma me cusa conflictos. Esta es una forma que intente.

sqltxt=" SELECT Observa.fecha, Observa.idmaestro, Observa.observa, Maestros.nombre FROM observa INNER JOIN maestros ON Observa.idmaestro = Maestros.idmaestro WHERE Observa.idalumno = '0001' ORDER BY Observa.fecha"
rs.Open sqltxt, Conn
Set result = Conn.Execute(sqltxt)
Do While Not result.EOF
rs.close
sqltxt=" SELECT Observa.fecha, Observa.idmaestro, Observa.observa, Maestros.nombre FROM observa INNER JOIN maestros ON Observa.idmaestro = Maestros.idmaestro WHERE Observa.idalumno = '0001' ORDER BY Observa.fecha"
rs.Open sqltxt, Conn
Set result = Conn.Execute(sqltxt)%>
<tr >
<td ><%=result("fecha")%></td>
<td ><%=result("nombre")%></td>
<td ><%=result("observa")%></td>
<%rs.close
sqltxt=" SELECT Observa.fecha, Materias.nombre FROM escuela!observa INNER JOIN escuela!materias ON Observa.idmaestro = Materias.idmaestro WHERE Observa.idalumno = '0001' ORDER BY Observa.fecha "
rs.Open sqltxt, conn
Set result = Conn.Execute(sqltxt)
%>
<td ><%=result("nombre")%></td></tr>
<%result.MoveNext
Loop %>

Gracias...

Flyer
21 de Enero del 2002
para acceder a los campos de un recordset puedes acceder tambien por un indice en vez de un literal
ejemplo rs(0)

De todas formas si tienes problemas con suplicados
y quieres acceder con un nombre, una solución es utilizar alias

ej
select tabla1.nombre as n1,tabla2.nombre as n2 from tabla1,tabla2...............

y accederias al recordset por el alias

rs("n1")
rs("n2")

lo que no se es si en foxpro se utiliza la clausula as para definir alias o simplemete un espacio en blanco,bueno eso creo que lo puedes averiguar tu.


Un Saludo

Edwin Molina
21 de Enero del 2002

Asi es, solo necesitas utilizar alias para los nombres de los campos. Y la estructura de la sentencias SQL, es soportada por ANSI92.

Nos vemos

Edwin Molina