SQL - Problema con resultado de consulta.

   
Vista:

Problema con resultado de consulta.

Publicado por Patricio (2 intervenciones) el 27/07/2010 22:34:32
Salu2 amigos.

Les cuento un poco mi situación.
Estoy haciendo un programa que se conecta a una base de datos access para obtener ciertos datos. La base de datos contiene información sobre facturas de ventas y contabilidad.
El programa que estoy haciendo tiene que rescatar los datos del detalle de la factura, es decir, código del producto, descripción, precio, cantidad y total. Hasta ahí, todo bien, la complicación que tengo es respecto a la consulta SQL para obtener dichos datos debido a que tengo que rescatar información de 3 tablas.
Tabla Nº 1 : Articulos
Campos:
Artcod : codigo del articulo
artde : descripción del articulo
etc. ( los 2 de arriba son los que me importan )

Tabla Nº 2: Detartcpavta
Campos:
doccod: codigo del documento
ecvnumdoc: numero de factura
artcod: codigo del artículo
dacvcant : Cantidad que ha sido vendida del artículo
dacvpneto: precio del articulo
dacvsubtotitem: subtotal, es decir, precio x cantidad
etc.( los 6 de arriba son los que me importan )

Tabla Nº 3: Detcpavtafiw
Campos:
doccod: codigo del documento
ecvnumdoc: numero de factura
artcod: codigo del artículo
etc.( los 3 de arriba son los que me importan )

Tengo la siguiente consulta access que me rescata la información del detalle:

SELECT detcpavtafiw.artcod, articulos.artdes,detartcpavta.dacvcant,detartcpavta.dacvpneto,detartcpavta.dacvsubtotitem
from articulos, detcpavtafiw,detartcpavta
where detartcpavta.artcod = articulos.artcod
and detartcpavta.doccod = '4' and detartcpavta.ecvnumdoc = 1
and detcpavtafiw.doccod = '4' and detcpavtafiw.ecvnumdoc = 1

Ese 4 y 1, son valores de prueba que ingreso para filtrar la busqueda, donde 4 indica que es una factura de venta electrónica y 1 es el número de la factura propiamente tal.
El problema es que el resultado se me repite, en la factura de ejemplo tengo esto:

Codigo Descripcion Precio Cantidad Total
1 Aceitunas Negras 1.500 10 15.000
2 Pickles 1.850 10 18.500

Pero el resultado de la consulta SQL es:

Codigo Descripcion Precio Cantidad Total
1 Aceitunas Negras 1.500 10 15.000
2 Aceitunas Negras 1.500 10 15.000
1 Pickles 1.850 10 18.500
2 Pickles 1.850 10 18.500

Y no sé donde pueda estar el problema.

Espero que alguien pueda ayudarme.

Desde ya, 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:Problema con resultado de consulta.

Publicado por Leonardo Josue (878 intervenciones) el 28/07/2010 16:40:16
Buenos días Patricio:

Una recomendación, cuanto tengas que extraer información de dos o más tablas utiliza el operador JOIN para definir las relaciones entre las tablas en lugar de hacerlo de manera explícita en la sección WHERE. Por lo que puedo ver en tu consulta se está realizando el producto carteciano entre alguna tabla, ya que seguramente falta definir alguna relación entre las tablas. En el post no mencionas qué llaves foráneas tienes definidas en tus tablas, pero por el nombre de los campos puedo deducir algunas. Intenta esto a ver si te funciona

SELECT
detcpavtafiw.artcod,
articulos.artdes,
detartcpavta.dacvcant,
detartcpavta.dacvpneto,
detartcpavta.dacvsubtotitem
FROM articulos
INNER JOIN
(
detcpavtafiw INNER JOIN detartcpavta ON
detcpavtafiw.doccod = detartcpavta.doccod AND
detcpavtafiw.ecvnumdoc = detartcpavta.ecvnumdoc AND
detcpavtafiw.artcod = detartcpavta.artcod
)
ON
articulos.artcod = detcpavtafiw.artcod

No recuerdo muy bien cómo se hace la anidación de JOIN's en ACCESS, si la consulta no funciona sería cuestión que revises la colocación de los paréntesis.

Si continuas teniendo problemas con la consulta lo comentas en el foro para tratar de ayudarte.

Saludos.
Leo.
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:Problema con resultado de consulta.

Publicado por Patricio (2 intervenciones) el 28/07/2010 22:56:48
Muchas gracias por la respuesta Leonardo.
Era lo que necesitaba. tan solo tuve que agregar al final:

where detcpavtafiw.doccod = '4' and detcpavtafiw.ecvnumdoc =1

para que me mostrara los datos asociados a un numero de factura en particular.

Nuevamente, muchas gracias.

Salu2.
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