Left Join muy particular
Publicado por Jeronimo (2 intervenciones) el 02/06/2006 14:49:47
Hola!!!
Estoy trabajando con Visual Basic 6 y una base de datos Access.
Tengo las siguientes tablas:
Articulos:
-Id (autonumérico long)
-Descripcion (text)
Stock:
-Articulo (hace referencia a la clave id de la tabla Articulos)
-NumeroSerie (text)
-Especificaciones (text)
-Marca (long)
-PrecioCosto (currency)
-PrecioVenta (currency)
-Garantia (byte)
Marcas:
-Id (autonumérico long)
-Descripcion (text)
Como cada artículo ingresado en el stock lleva número de serie único, no tengo campo Cantidad. Es decir, si tengo diez artículos iguales, en vez de ser un único registro con Cantidad = 10, van a ser diez registros porque cada uno se va a diferenciar por el número de serie. La tabla Articulos la uso para tener los articulos con sus respectivas descripciones. Y la tabla Stock es para poder cargar en stock los artículos que desee (pueden estar todos los de la tabla Articulos o puede haber solo algunos o, inclusive, ninguno).
Lo que quiero hacer a través de una instrucción SQL es recuperar los siguientes campos:
-Id del artículo (ya sea Articulos.Id o Stock.Articulo, que es lo mismo)
-Descripción del artículo (Articulos.Descripcion)
-Descripción de la marca (Marcas.Descripcion)
-Especificaciones (Stock.Especificaciones)
-Id de la marca (Marcas.Id)
-PrecioCosto
-PrecioVenta
Además necesito que me cuente cuántos registros hay de cada artículo en la tabla Stock. Y también que haga la búsqueda de acuerdo al texto que le pase para el campo Descripcion de la tabla Articulos.
Actualmente tengo así: "Select count(*) as enStock, Stock.Articulo, Stock.Marca, Articulos.Descripcion, Stock.Especificaciones, MarcasArticulos.Descripcion, Stock.PrecioCosto, Stock.PrecioVenta from Stock, Articulos, MarcasArticulos where Stock.Articulo = Articulos.Id and Articulos.Descripcion like '%" & txtBuscar.Text & "%' and Stock.Marca = MarcasArticulos.Id group by Stock.Articulo, Stock.Marca, Articulos.Descripcion, Stock.Especificaciones, MarcasArticulos.Descripcion, Stock.PrecioCosto, Stock.PrecioVenta order by Articulos.Descripcion"
Lo que pasa es que esto me muestra todo lo que quiero, menos los registros de la tabla Articulos que no tengan coincidencia en la tabla Stock. Sé que esto último se hace con left join, pero estoy perdido y no sé cómo lograr lo que finalmente quiero.
Espero que alguien me pueda ayudar, ya que estoy trabado con esto y me urge...
Muchas gracias!!!
Estoy trabajando con Visual Basic 6 y una base de datos Access.
Tengo las siguientes tablas:
Articulos:
-Id (autonumérico long)
-Descripcion (text)
Stock:
-Articulo (hace referencia a la clave id de la tabla Articulos)
-NumeroSerie (text)
-Especificaciones (text)
-Marca (long)
-PrecioCosto (currency)
-PrecioVenta (currency)
-Garantia (byte)
Marcas:
-Id (autonumérico long)
-Descripcion (text)
Como cada artículo ingresado en el stock lleva número de serie único, no tengo campo Cantidad. Es decir, si tengo diez artículos iguales, en vez de ser un único registro con Cantidad = 10, van a ser diez registros porque cada uno se va a diferenciar por el número de serie. La tabla Articulos la uso para tener los articulos con sus respectivas descripciones. Y la tabla Stock es para poder cargar en stock los artículos que desee (pueden estar todos los de la tabla Articulos o puede haber solo algunos o, inclusive, ninguno).
Lo que quiero hacer a través de una instrucción SQL es recuperar los siguientes campos:
-Id del artículo (ya sea Articulos.Id o Stock.Articulo, que es lo mismo)
-Descripción del artículo (Articulos.Descripcion)
-Descripción de la marca (Marcas.Descripcion)
-Especificaciones (Stock.Especificaciones)
-Id de la marca (Marcas.Id)
-PrecioCosto
-PrecioVenta
Además necesito que me cuente cuántos registros hay de cada artículo en la tabla Stock. Y también que haga la búsqueda de acuerdo al texto que le pase para el campo Descripcion de la tabla Articulos.
Actualmente tengo así: "Select count(*) as enStock, Stock.Articulo, Stock.Marca, Articulos.Descripcion, Stock.Especificaciones, MarcasArticulos.Descripcion, Stock.PrecioCosto, Stock.PrecioVenta from Stock, Articulos, MarcasArticulos where Stock.Articulo = Articulos.Id and Articulos.Descripcion like '%" & txtBuscar.Text & "%' and Stock.Marca = MarcasArticulos.Id group by Stock.Articulo, Stock.Marca, Articulos.Descripcion, Stock.Especificaciones, MarcasArticulos.Descripcion, Stock.PrecioCosto, Stock.PrecioVenta order by Articulos.Descripcion"
Lo que pasa es que esto me muestra todo lo que quiero, menos los registros de la tabla Articulos que no tengan coincidencia en la tabla Stock. Sé que esto último se hace con left join, pero estoy perdido y no sé cómo lograr lo que finalmente quiero.
Espero que alguien me pueda ayudar, ya que estoy trabado con esto y me urge...
Muchas gracias!!!
Valora esta pregunta


0