Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Multiple consulta SQL

Buenas

El problema que tengo es que una consulta sql me da datos erroneos, lo que deseo hacer es sumar los precios de una tabla y en vez de darme un resultado correcto me da uno incorrecto, la consulta deberia darme resultado = 30 pero me lo duplica, lo curioso es que cuando le quito la tercera tabla los resultados salen correctos alguien podria decirme como hacer la consulta de manera correcta.



Código Delphi [-]
select
  T1.Fecha,
  T2.Item,
  T2.sum(Precio), as Precio,
  T3.Modalidad
from
  tabla_1 as T1,
  tabla_2 as T2,
  table_3 as T3
where
  (T1.id = :ID) and
  (T1.id = T2.id) and
  (T1.id = T3.id)
group by
  (T1.Fecha, T2.Item, T3.Modalidad)
order by
  T1.Fecha, T2.Item

Última edición por Casimiro Notevi fecha: 05-11-2011 a las 00:50:29.
Responder Con Cita
  #2  
Antiguo 05-11-2011
CrazySoft CrazySoft is offline
Miembro
 
Registrado: abr 2005
Posts: 96
Poder: 20
CrazySoft Va por buen camino
No tienes ningun campo que relaciona una tabla con otra, por eso te dara cualquier cosa
Responder Con Cita
  #3  
Antiguo 05-11-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Si tengo los indices que relacionan las tablas pero no lo puse.

Tabla_1
ID

Tabla_2
ID, IDT1

Tabla_3
ID, IDT1
Responder Con Cita
  #4  
Antiguo 05-11-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Aca la consulta completa.
Vean como me duplica los registros, solo deberia salir 1 media parrila y 1 parrila familiar total 220.34, pero la consulta me lo duplica, algun genio que me pueda ayudar.


Código Delphi [-]
select distinct
  VENITM.Item as Item,
  VENTTJ.TipTar as Tarjeta,
  sum(VENITM.cantid) as Cantidad,
  sum(VENITM.PreTot) as Total,
  sum(VENITM.PreIgv) as Igv
from
  ecam_db_lafogata.venmov as VENMOV
inner join
  ecam_db_lafogata.venitm as VENITM
on
  (VENMOV.LINK_0001 = VENITM.LINK_0001) and
  (VENMOV.LINK_0002 = VENITM.LINK_0002) and
  (VENMOV.LINK_0003 = VENITM.LINK_0003) and
  (VENMOV.LINK_0004 = VENITM.LINK_0004) and
  (VENMOV.LINK_0005 = VENITM.LINK_0005)
inner join
  ecam_db_lafogata.venttj as VENTTJ
on
  (VENMOV.LINK_0001 = VENTTJ.LINK_0001) and
  (VENMOV.LINK_0002 = VENTTJ.LINK_0002) and
  (VENMOV.LINK_0003 = VENTTJ.LINK_0003) and
  (VENMOV.LINK_0004 = VENTTJ.LINK_0004) and
  (VENMOV.LINK_0005 = VENTTJ.LINK_0005)
where
  (VENMOV.LINK_0001 = 1) and
  (VENMOV.LINK_0001 = VENITM.LINK_0001) and
  (VENMOV.LINK_0002 = VENITM.LINK_0002) and
  (VENMOV.LINK_0003 = VENITM.LINK_0003) and
  (VENMOV.LINK_0004 = VENITM.LINK_0004) and
  (VENMOV.LINK_0005 = VENITM.LINK_0005) and
  (VENMOV.LINK_0001 = VENTTJ.LINK_0001) and
  (VENMOV.LINK_0002 = VENTTJ.LINK_0002) and
  (VENMOV.LINK_0003 = VENTTJ.LINK_0003) and
  (VENMOV.LINK_0004 = VENTTJ.LINK_0004) and
  (VENMOV.LINK_0005 = VENTTJ.LINK_0005) and
  (VENMOV.Fecha >= '2011/10/16') and
  (VENMOV.Fecha <= '2011/10/16') and
  (VENMOV.Estado <> 'anulado')
group by
  VENMOV.LINK_0001, VENITM.Tipo, VENITM.Item, VENTTJ.TipTar


Última edición por Casimiro Notevi fecha: 05-11-2011 a las 21:17:54.
Responder Con Cita
  #5  
Antiguo 05-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Del select que pusiste en el primer post a este último hay mucha diferencia, montones de campos que no sabemos qué son, ¿por qué no explicas claramente las tablas y sus campos y lo que necesitas hacer?, de otra forma es imposible ayudarte.
Responder Con Cita
  #6  
Antiguo 06-11-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Lo que necesito es que no se dupliquen o tripliquen los registros, la consulta sql deberia darme.

1 parrila familiar
1 media parrila

Pero como se ve en la imagen me da 4 registros, cuando le quito la tabla_3 de la clausula from me da los resultados correctos pèro si la pongo todo se malogra, puse los enlaces de cada tabla.

La Tabla_1 esta enlazada con la Tabla_2, y la Tabla_1 tambien esta enlazada con la Tabla_3, entonces en la clusula from seria

Código Delphi [-]
from 
  database.Tabla_1, 
  database.Tabla_2, 
  database.Tabla_3

Si la Tabla_2 tiene 2 registros y la Tabla_3 2 registros, al hacer un select con ambas tablas me los duplica lo que deseo es que no los duplique como puedo hacer eso.



saludos
Responder Con Cita
  #7  
Antiguo 12-11-2011
Avatar de Godzuki
Godzuki Godzuki is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 26
Poder: 0
Godzuki Va por buen camino
Hola. Yo creo que para que puedas trabajar con tus tablas para obtener lo que gustes, necesitas agregar una tabla extra que relacione a las otras tres entre si. De esta forma podrás ejecutar consultas de agrupación sin tener problemas derivados de no tener debidamente relacionadas las tablas entre si. Mi propuesta es la siguiente:

al agregar la tabla RELACION, tenemos bien ligadas a los registros de cada una de tus 3 tablas. Para obtener información, solo debes hacer una consulta que relacione a las 3 tablas dentro de la tabla relación, he aquí unos ejemplos:
La siguiente consulta da un listado de cada venta hecha y la ordena por fecha.
Código SQL [-]
Select Fecha, Item, Preciou, Mod_pago, Numero
From Tabla1 As T1, Tabla2 As T2, Tabla3 As T3, Relacion As Rela
Where T1.id_tabla1 = Rela.id_tabla1 And
T2.id_tabla2 = Rela.id_tabla2 And
T3.id_tabla3 = Rela.id_tabla3
ORDER BY FECHA;
La siguiente consulta da las ventas totales en cada fecha.
Código SQL [-]
Select Fecha, SUM(Preciou)
From Tabla1 As T1, Tabla2 As T2, Tabla3 As T3, Relacion As Rela
Where T1.id_tabla1 = Rela.id_tabla1 And
T2.id_tabla2 = Rela.id_tabla2 And
T3.id_tabla3 = Rela.id_tabla3
GROUP BY FECHA;
Para que esto funcione, en la tabla RELACION debe insertarse en cada campo ID_TABLA1, ID_TABLA2 E ID_TABLA3, los valores de sus respectivos campos en las tablas TABLA1, TABLA2, TABLA3.
Espero que esto te sea de ayuda. Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
modificacion de resultado Consulta multiple Yulka Varios 10 25-03-2011 21:11:28
where multiple José Luis Garcí SQL 5 15-09-2010 19:33:37
Consulta Multiple novato03 Conexión con bases de datos 4 02-12-2008 18:11:42
seleccion multiple cyber_zero Varios 2 26-06-2008 17:22:33
Ejecucion multiple de un exe por la red lgarcia OOP 4 05-04-2007 17:09:33


La franja horaria es GMT +2. Ahora son las 05:19:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi