SQL - Left Join muy particular

 
Vista:

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!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Left Join muy particular

Publicado por Julio (3 intervenciones) el 03/06/2006 01:25:22
No se si te sirva

create table empresa
(
id number not null,
des varchar(50) not null,
id_tipodoc number,
num_doc varchar(20),
constraint pk_empresa primary key (id),
CONSTRAINT fk_iipodoc FOREIGN KEY (id_tipodoc)
REFERENCES tipodocoumento (id_tipodoc)
);
create table tipodocumento
(
id_tipodoc number not null,
des_tipodoc varchar(20) not null,
constraint pk_tipodoc primary key (id_tipodoc)
);

Select empresa.id,
empresa.des,
empresa.id_tipodoc,
empresa.num_doc
From empresa
Left Join tipodocumento ON empresa.id_tipodoc = tipodocumento.id_tipodoc;

No se si Access soporte eso, pero en mi DB si soporta, es decir, el tipo documento es una clave foranea que acepta nulos en la tabla empresa, vale decir que puede registrar una empresa sin un tipo de documento pero yo quiero ver todas sin excepcion.

Pruebalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Left Join muy particular

Publicado por Jeronimo (2 intervenciones) el 03/06/2006 04:45:17
Muchas gracias, Julio. Lo probaré y luego te cuento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar