• Viernes 19 de Abril de 2024, 14:57

Autor Tema:  problema con query para cierre de mes  (Leído 2910 veces)

fre_saga

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
problema con query para cierre de mes
« en: Domingo 2 de Junio de 2013, 19:31 »
0
buenos dias me presento me llamo fredy y vivo en el salvador 
el motivo de este mensaje es para pedirles ayuda para terminar una query la cual sera la encargada para realizar un cierre de mes
hasta el momento tengo diseñada para que me consulte los  detalles de las las tablas compra_dt y venta_dt lo cual funciona perfectamente asi esta
Código: [Seleccionar]
SELECT  a.cod_prod, b.cantida AS cant_compra, b.ptotal AS tota_compra, c.cantida AS cant_venta,c.ptotal AS total_venta  FROM existencias a
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal  FROM compra_dt GROUP BY cod_prod) b   ON
a.cod_prod = b.cod_prod
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal  FROM venta_dt GROUP BY cod_prod) c   ON
a.cod_prod = c.cod_prod
GROUP BY a.cod_prod

pero ahora quiero filtra los datos por rango de fechas de las tablas de cabecera  de compra_cb y venta_cb

esta es la estructura de las tablas
Código: [Seleccionar]
CREATE TABLE compra_cb ( nfactura  varchar(25) PRIMARY KEY,  fecha    date,  cod_prov  varchar(25),  total   varchar(15));

CREATE TABLE compra_dt ( nfactura  nvarchar(25),  cod_prod  varchar(25),  cantida   float,  punitario   float,  ptotal   varchar(13),
  costopromedio    float,  totalexistencia  varchar(13));

CREATE TABLE venta_cb ( nfactura  varchar(25) PRIMARY KEY NOT NULL,  venta  integer,  baja  integer,  fecha  date,
  cliente   varchar(80),  total     varchar(15));

CREATE TABLE venta_dt (  nfactura  varchar(25),  cod_prod   varchar(25),  cantida  float(8,2),  costopromedio  float(8,2),
  ptotal         varchar(13));

ya tengo ratos de estar queriendo filtrar por la cabecera pero no lo logro espero que ustedes me puedan ayudar a resolver el problema

de esta forma lo estado intentando
Código: [Seleccionar]
SELECT a.cod_prod, b.cantida AS cant_compra, b.ptotal AS tota_compra, c.cantida AS cant_venta,c.ptotal AS total_venta  FROM existencias a
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal  FROM compra_dt GROUP BY cod_prod) b   ON
a.cod_prod = b.cod_prod
LEFT JOIN (SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal  FROM venta_dt GROUP BY cod_prod) c   ON
a.cod_prod = c.cod_prod
INNER JOIN compra_cb ON compra_cb.nfactura = compra_dt.nfactura
INNER JOIN venta_cb ON venta_cb.nfactura = venta_dt.nfactura
WHERE compra_cb.fecha BETWEEN 01/06/2013 AND 30/06/2013
GROUP BY a.cod_prod
me da este error "SQL Error: no such column: compra_dt.nfactura" en la siguiente linea              INNER JOIN compra_cb ON compra_cb.nfactura = compra_dt.nfactura

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re:problema con query para cierre de mes
« Respuesta #1 en: Martes 4 de Junio de 2013, 07:33 »
0
Qué tal fre_saga? Bienvenido al foro.

Debes tener en cuenta que cuando usas las líneas:

Código: [Seleccionar]
SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal  FROM compra_dt GROUP BY cod_prod
y

Código: [Seleccionar]
(SELECT cod_prod, SUM (cantida) AS cantida, SUM (ptotal) AS ptotal  FROM venta_dt GROUP BY cod_prod
por decirlo de alguna manera, estás creando tablas "virtuales" que sólo incluyen esos campos que mencionas luego de la instrucción select por eso estás obteniendo el error "no existe tal columna"...

SQL en un poco mañoso. Prueba en añadir la columna nfactura en los SELECT indicados más arriba y luego en hacer referencia a los alias de las tablas que estas creando (b y c) porque podrías tener el error de hacer referencia a una tabla que no pertenece a la consulta...

Saludos.


fre_saga

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:problema con query para cierre de mes
« Respuesta #2 en: Miércoles 5 de Junio de 2013, 01:26 »
0
gracias ya solucione ese problema pero hoy me tengo otro en una tabla tengo un campo numerico(13,4) y en el formulario tengo este calculo
 Private Sub calcular()
        If txtptotal.Text = "" Or txtcantida.Text = "" Then
            txtcostopromedio.Text = ""
        Else
            txtcostopromedio.Text = FormatNumber(txtptotal.Text / txtcantida.Text, 4)
        End If
el cual funciona bien pero el problema es a la hora de guardar ese resultado  ejemplo  25268.85/10=2,526.8850 pero cuando guardo no lo hace con ese valor
 

fre_saga

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:problema con query para cierre de mes
« Respuesta #3 en: Miércoles 5 de Junio de 2013, 17:41 »
0
ya solucione el problema

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re:problema con query para cierre de mes
« Respuesta #4 en: Jueves 6 de Junio de 2013, 00:09 »
0
Excelente! fre_saga. Me alegro de que hayas podido resolver tus dudas por tí mismo.

Es el espíritu de los foros que comentes cual fue la solución que encontraste para el problema. Así, cualquiera que entre al foro con una duda igual o parecida puede hallar en tu ejemplo un sabio consejo, ayuda u orientación.

Saludos.