Я нуждаюсь в том, чтобы получить цену на цену реестра с большей датой, для этого я использую следующие подмостки:
Таблица ingreso_mercancias_cabecera
select * from ingresos_mercancias_cabecera
Таблица ingresos_mercancias_detalle
select * from ingresos_mercancias_detalle
Таблица продукты
select * from productos
и то, что я хочу получить, так это таблица, где он был получен codigo_barras, precio_entrada, и датируй
для этого я использую эту консультацию:
select p.codigo_barras,
i.precio_entrada,
max(ic.fecha) as fecha
from ingresos_mercancias_detalle i,
ingresos_mercancias_cabecera ic, productos p
where i.id_ingreso_cabecera=ic.id
and i.id_producto=p.id
group by i.precio_entrada, p.codigo_barras, p.id
order by p.id
но он дает мне как оказанный это:
Я не хочу, чтобы выделенные в красном появились у меня в консультации.
Спасибо.
Query для создания DB.
CREATE TABLE familias
(
id serial NOT NULL,
nombre character varying(50),
CONSTRAINT pkfamilias PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE TABLE marcas
(
id serial NOT NULL,
nombre character varying(50),
CONSTRAINT pkmarcas PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE TABLE productos
(
id serial NOT NULL,
id_marca integer NOT NULL,
id_familia integer NOT NULL,
codigo_barras character varying,
descripcion character varying(500),
precio_costo double precision,
precio_venta double precision,
precio_mayorista double precision,
precio_credito double precision,
cant_paquete integer,
iva integer,
CONSTRAINT clave_primaria PRIMARY KEY (id),
CONSTRAINT fk_familia FOREIGN KEY (id_familia)
REFERENCES familias (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_marca FOREIGN KEY (id_marca)
REFERENCES marcas (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT productos_codigo_barras_key UNIQUE (codigo_barras)
)
WITH (
OIDS=FALSE
);
CREATE TABLE ingresos_mercancias_cabecera
(
id serial NOT NULL,
no_factura character varying(100),
id_proveedor integer,
total double precision,
fecha date,
hora character varying(8),
CONSTRAINT pk_ingresos PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE TABLE ingresos_mercancias_detalle
(
id serial NOT NULL,
id_producto integer,
id_ingreso_cabecera integer,
cantidad double precision,
precio_iva double precision,
precio_entrada double precision,
CONSTRAINT pk_ingresos_detalle PRIMARY KEY (id),
CONSTRAINT fk_ingreso_cabecera FOREIGN KEY (id_ingreso_cabecera)
REFERENCES ingresos_mercancias_cabecera (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT fk_producto FOREIGN KEY (id_producto)
REFERENCES productos (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
То, что ты estГЎ не будучи состоит в том, чтобы определять, которые являются датами mГЎximas для каждого продукта в таблице детали, и выдавать консультацию с этими датами.
query не это probГ©, но должен будь быть что-то asГ-:
select p.codigo_barras,
i.precio_entrada,
maximos.fecha
from ingresos_mercancias_detalle i,
ingresos_mercancias_cabecera ic,
productos p,
(select p.id, p.codigo_barras, max(ic.fecha) as fecha
from ingresos_mercancias_detalle i,
ingresos_mercancias_cabecera ic,
productos p
where i.id_ingreso_cabecera=ic.id
and i.id_producto=p.id
group by p.id, p.codigo_barras
) maximos -- Este subquery extrae la fecha máxima por cada producto.
where i.id_ingreso_cabecera=ic.id
and i.id_producto=p.id
and ic.producto_id = maximos.id -- Acá filtras los resultados para que
and ic.fecha = maximos.fecha -- quedarte con los precios de las fechas máximas
В любом случае, если podГ©s agregГЎ они "поверьте table" в вопрос asГ - я скроллирую query и я это могу debuguear.