Consulta inner join VB

Me disculpas si te hago muchas preguntas pero deseo aprender y antes de hacerlas quemo un poco de neuraneas, a veces con resultado y a veces no.
Quiero hacer una consulta inner join a un trio de tablas. La idea es que cuando ingrese cualquier un numero de guía me traiga el destinatario, el producto, el estado y el mensajero que la lleva.
Actualmente tengo esto pero solo me consulta la el numero de guía.:
Function ConsultarGuia(ByVal guia As Integer)
Dim conMyData As SqlConnection
Dim strSql As String
strSql = "select NumeroGuia from Guia where NumeroGuia like '%" & guia & "%'"
'Conexión a la base de datos
conMyData = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("StrCon").ConnectionString)
'
Try 'Control de errores
conMyData.Open()
'crea y ejecuta la consulta al sqldataadapter que devuelve registros
Dim sda As SqlDataAdapter = New SqlDataAdapter(strSql, conMyData)
'crea un nuevo dataset vacio
Dim ds As DataSet = New DataSet
sda.Fill(ds)
conMyData.Close()
Return ds
Catch ex As Exception 'Se produce error en el uso del procedimiento
Dim err As String
err = ex.Message
Return err
End Try
End Function
Si utilizo inner join seria algo asi? (Para no extenderme te resumo solo destinatario y guía)
StrSql = "select * from guia inner join destinatario on ... Aqui no se como ingresar el numero de guia para que lo consulte... Estoy leyendo unos tutoriales pero trabaja con valores ya registrados pero si apenas voy a ingresar un numero de guia tambien iria "like"?...
Respuesta
Te recomiendo que no lances las consultas desde "código duro" o sea el compilado, en su lugar crea Stored Procedures en tu DB, de este modo puedes agregar funcionalidades sin tener que recompilar/redistribuir las aplicaciones siempre y cuando no cambie la salida de los objetos de DB.

3 respuestas más de otros expertos

Respuesta
1
Tanto Inner Join, como los demás Left y Rigth, no son muy recomendables.
Lo que yo hago es Where uniendo los campos similares en el Where.
Digamos que tenemos dos tablas, una productos y otra compras, entonces para obtener el detalle o descripción del producto haría algo así.
Select A.IdCompra, A.CodProducto, B.ProDescripcion, A.TotalCompra From TablaCompras A, TablaProductos B Where A.IdProducto = B.IdProducto
Con ese Query obtendrás lo antes mencionado, sin hacer Inner ni ningún otro Join.
Solo debes aplicarlo a tu caso, de Guías y demás.
Hola ..
TE pregunto, ¿Si quiero consultar un número de guía cuando lo inserte en un texbox llevaría "Like" y como seria entonces a tu manera sin el inner join?
Gracias
Como te dije en la respuesta anterior, debes buscar en las tablas aquellos campos que las unen, digamos que las une en este caso el IdNroGuia.
Select a.Campo b.Campo From Tabla A, Tabla B Where IdNroGuia = TextBox.Text and a.IdNroGuia = b.IdNroGuia
Ese es el ejemplo, puede haber más de un campo que una a una tabla, puede haber más de dos tablas, etc.
Respuesta
1
INNER JOIN se usa asi:
SELECT (Tabla1.Columna, Tabla1.Columna ...,
Tabla2. Columna, Tabla2.Columna ...,
Tabla3. Columna, Tabla3.Columna ...,
FROM Tabla1
INNER JOIN Tabla2
ON Tabla.ForeignKey = Tabla.PrimaryKey
INNER JOIN Tabla3
ON Tabla.ForeignKey = Tabla.PrimaryKey
WHERE 'Filtro que quieras hacer
A cada Columna a la que t refieras debes Anteponer el Nombre de la Tabla.
Respuesta
1
Por cada inner join deberia ir un ON en el cual deberias igualar las campos por los campos que tenga en comun la tablas A con la tabla B.
¿O dónde esta la duda no lo entiendo muy bien? ¿Un ejemplo de clientes con el nombre de país ok?
Tablas
País
IdPais
Descripción
Clientes
IdCliente
Nombres
IdPais
Select cli.IdCliente, cli.Nombre, pa.Descripcion from Clientes cli on Pais pa on cli.IdPais = pa.IdPais
PDT

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas