Consulta SQL entre tres tablas

Buenas, estoy manipulando una base de datos en visual basic 6.0, y estoy usando sql.
Tengo 3 tablas.
Escuelas = *CodigoEscuela + NombreEscuela + Direccion 
Contactos = CodigoEscuela  + Contacto + Telefono 
Catalogos = CodigoEscuela + NombreCatalogo + Fecha 
Quiero generar una consulta donde pueda obtener todos los campos de las 3 tablas donde NombreEscuela = EBG14. Estoy usando esto pero no me da resultado...
"SELECT Escuelas.* , Contactos.* , Catalogos.* FROM Escuelas,Contactos,Catalogos WHERE Escuelas.NombreEscuela = '" & lstEscuelas.Text & "' AND (Escuelas.CodigoEscuela = Contactos.CodigoEscuela) AND (Escuelas.CodigoEscuela = Catalogos.CodigoEscuela)"
Esta consulta me funciona a medias, porque luego trato de cargar todos los campos de la tabla Contactos y me repite siempre el mismo registro, cuando con catálogos y Escuelas no tengo ningún problema,,,
Dim intMatriz as Integer
    intMatriz% = 0
    'Cargo en los textbox los campo de la tabla Contactos
    With rstEscuelas
        .MoveFirst
        Do While Not .EOF
            For intMatriz% = 0 To 2
                If Not IsNull(.Fields("Contactos.CodigoEscuela")) Then
                    txtContacto_Codigo(intMatriz%).Text = .Fields("Contactos.CodigoEscuela")
                Else
                    txtContacto_Codigo(intMatriz%).Text = ""
                End If
                If Not IsNull(.Fields("Contacto")) Then
                    txtContacto_Nombre(intMatriz%).Text = .Fields("Contacto")
                Else
                    txtContacto_Nombre(intMatriz%).Text = ""
                End If
                If Not IsNull(.Fields("Telefono")) Then
                   txtContacto_Telefono(intMatriz%).Text = .Fields("Telefono")
                Else
                   txtContacto_Telefono(intMatriz%).Text = ""
                End If
                If Not IsNull(.Fields("Observacion")) Then
                   txtContacto_Observacion(intMatriz%).Text = .Fields("Observacion")
                Else
                   txtContacto_Observacion(intMatriz%).Text = ""
                End If
                .MoveNext
            Next intMatriz%
        Loop
   End With
Es mi primera ves con sql y bases relacionales, así que cualquier consejo no está de más. Este post ya lo publique en otro sitio del foro y no si debería darlo de baja porque me parece que este es lugar idea...
Desde ya muchas gracias
Chem@!

1 respuesta

Respuesta
1
El problema es que tienes diferentes cantidades de registros y un sql de tres tablas te va a dar registros completos duplicando lo que falte
dependiendo de lo que quieras
puede cambiar la union de las tablas, ¿toca en la raya entre dos tablas en el editor de consultas
aunque no entiendo para que rellenas contactos con la misma tabla de contactos o entendí mal algo?
Experto, no entendí mucho tu respuesta. El tema es así, supongamos este registro en las 3 tablas;
Escuelas
*CodigoEscuela    NombreEscuela   Direccion
  06 <span style="white-space: pre;"> </span>     EGB14                 Garzon 445
Contactos
CodigoEscuela    Contacto                Telefono
06     <span style="white-space: pre;"> </span>   Carlos Gonzalez     5587-7878
06                       Manuel Perez         7899-7755
06                       Francisco Rey         8785-1259
Catalogos
CodigoEscuela    NombreCatalogo    Fecha
06<span style="white-space: pre;"> </span>   EG565TT<span style="white-space: pre;"> </span>  18/05/2009
06<span style="white-space: pre;"> </span>   ER66TTY                  08/05/2009
06<span style="white-space: pre;"> </span>   ET77TTY                  10/03/2009
Yo a través de la consulta SQL, la cual dudo que este bien formulada, quiero obtener todos los datos del registro cuyo campo CodigoEscuela es igual a 06.
Lo logro pero solo para la tabla catálogos y escuelas. En contactos me carga repetido en los 3 textbox el mismo registro, el tercer registro "Francisco Rey".
Bueno, creo que ahí estoy más claro, gracias por la dedicación.
Saludos
Bueno acá estas uniendo los contactos con las escuelas solo con el código de la escuela así que sale el contacto ultimo siempre, si lo que quieres es que salga un contacto por cada linea tiene que estar unido el contacto con esa linea (por ejemplo a través de un id)
Sino

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas