elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  RegDupli
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: RegDupli  (Leído 7,010 veces)
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
RegDupli
« en: 1 Marzo 2010, 19:08 pm »

Hola buenas,tengo un problema respecto a esta sentencia.
Me salen registros duplicados según el número de líneas de pedido en el detalle de albaran que estoy buscando.

//////////////////////////////////////SENTENCIA SQL//////////////////////////////////////////
SELECT
     EMPRESA.CIFNIF,
     CABALBARAN.CLIENTE,
     CLIENTES.NOMBRE,
     DETALBARAN.IDALBARAN,
     CABALBARAN.FECHA,
     (SELECT SUM(DETALBARAN.CANTIDAD*DETALBARAN.PRECIO) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_BRUTO",
     (SELECT
SUM((DETALBARAN.CANTIDAD*DETALBARAN.PRECIO)*DETALBARAN.DESCUENTO/100) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_DESCUENTO"

FROM
     EMPRESA,
     CLIENTES,
     DETALBARAN,
     CABALBARAN  

WHERE
    CABALBARAN.CLIENTE =16
    AND CABALBARAN.FECHA BETWEEN '13/01/10' AND '15/01/10'
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE = CABALBARAN.CLIENTE

///////////////////////////////RESULTADO///////////////////////////////////////////////

2 filas mismos datos               

Saludos

PD:El único problema es que se repite,lo demás está bien.


« Última modificación: 3 Marzo 2010, 22:17 pm por noobdai » En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Registros duplicados
« Respuesta #1 en: 1 Marzo 2010, 19:16 pm »

Valgame... no han utilizado llaves primarias ni unicas ahi  :-\  porque tienes datos redundantes y eso no es correcto. (aunque no te culpo)  :rolleyes:

A tu consulta SQL agregale GROUP BY CLIENTE por ejemplo  :P mas o menos:

SELECT
     EMPRESA.CIFNIF,
     CABALBARAN.CLIENTE,
     CLIENTES.NOMBRE,
     DETALBARAN.IDALBARAN,
     CABALBARAN.FECHA,
     (SELECT SUM(DETALBARAN.CANTIDAD*DETALBARAN.PRECIO) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_BRUTO",
     (SELECT
SUM((DETALBARAN.CANTIDAD*DETALBARAN.PRECIO)*DETALBARAN.DESCUENTO/100) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_DESCUENTO"

FROM
     EMPRESA,
     CLIENTES,
     DETALBARAN,
     CABALBARAN 

WHERE
    CABALBARAN.CLIENTE =16
    AND CABALBARAN.FECHA BETWEEN '13/01/10' AND '15/01/10'
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE = CABALBARAN.CLIENTE
GROUP BY
CLIENTE



En línea

noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Registros duplicados
« Respuesta #2 en: 1 Marzo 2010, 19:29 pm »

Lo he probado tambien...pero me sale este error

GROUP BY CABALBARAN.CLIENTE
Error at Command Line:2 Column:5
Error report:
SQL Error: ORA-00979: no es una expresión GROUP BY

En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Registros duplicados
« Respuesta #3 en: 1 Marzo 2010, 19:32 pm »

sql server no???

aveces detesto los motores tan explicitos  :¬¬ 

Utiliza otro campo en GROUP BY que no utilizes aca:

CABALBARAN.CLIENTE =16
    AND CABALBARAN.FECHA BETWEEN '13/01/10' AND '15/01/10'
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE = CABALBARAN.CLIENTE

pero que exista en una de las tablas.
En línea

noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Registros duplicados
« Respuesta #4 en: 1 Marzo 2010, 19:36 pm »

He probado con CIFNIF y fecha..me sale el mismo error  :huh:

Saludos

PD:Utilizo Oracle
« Última modificación: 1 Marzo 2010, 19:38 pm por noobdai » En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Registros duplicados
« Respuesta #5 en: 2 Marzo 2010, 00:58 am »

Disculpa... en el momento que respondia aca estaba en el trabajo, y me era dificil coordinarme de tantas maneras y ofrecerte una respuesta valida.

Oracle por otro lado es muy estricto con su sintaxis.... no tanto como MySQL.

Intenta hacer esto:



SELECT
     EMPRESA.CIFNIF,
     CABALBARAN.CLIENTE,
     CLIENTES.NOMBRE,
     DETALBARAN.IDALBARAN,
     CABALBARAN.FECHA,
     (SELECT SUM(DETALBARAN.CANTIDAD*DETALBARAN.PRECIO) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_BRUTO",
     (SELECT
SUM((DETALBARAN.CANTIDAD*DETALBARAN.PRECIO)*DETALBARAN.DESCUENTO/100) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_DESCUENTO"

FROM
     EMPRESA,
     CLIENTES,
     DETALBARAN,
     CABALBARAN 

WHERE
    CABALBARAN.CLIENTE =16
    AND CABALBARAN.FECHA BETWEEN '13/01/10' AND '15/01/10'
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE = CABALBARAN.CLIENTE
GROUP BY (EMPRESA.CIFNIF,  CABALBARAN.CLIENTE, CLIENTES.NOMBRE, DETALBARAN.IDALBARAN, CABALBARAN.FECHA )



Ocurre ser que en los JOINS de varias tablas en Oracle, en GROUP BY hay que incluir todos los campos especificados del SELECT, ya que el tiene que agrupar elementos unicos por cada tabla incluida en el JOIN.

Tambien puedes obviar GROUP BY y utilizar la clausula DISTINCT despues del SELECT y antes de los campos es otra manera.

Dime si te funciona
« Última modificación: 2 Marzo 2010, 01:23 am por ^TiFa^ » En línea

noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Registros duplicados
« Respuesta #6 en: 3 Marzo 2010, 17:00 pm »

Lo primero Tifa...Muchas gracias por tu interés  :)

He probado con la sentencia que me has puesto..y me sale este error:

Error at Command Line:7 Column:84
Error report:
SQL Error: ORA-00979: no es una expresión GROUP BY


En cuanto a la utilización del DISTINCT..¿es de esta forma?:

SELECT
     DISTINCT EMPRESA.CIFNIF,
     DISTINCT CABALBARAN.CLIENTE,
     DISTINCT CLIENTES.NOMBRE,
     DISTINCT DETALBARAN.IDALBARAN,
     DISTINCT CABALBARAN.FECHA,
     DISTINCT (SELECT SUM(DETALBARAN.CANTIDAD*DETALBARAN.PRECIO) FROM M5DETALBARAN
WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_BRUTO",
     DISTINCT (SELECT SUM((DETALBARAN.CANTIDAD*DETALBARAN.PRECIO)*DETALBARAN.DESCUENTO/100) FROM DETALBARAN WHERE CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE ) AS "TOTAL_DESCUENTO"

FROM
     EMPRESA,
     CLIENTES,
     DETALBARAN,
     CABALBARAN

WHERE
    CABALBARAN.CLIENTE =16
    AND CABALBARAN.FECHA BETWEEN '13/01/10' AND '15/01/10'
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE = CABALBARAN.CLIENTE


Me sale este error:

Error at Command Line:3 Column:5
Error report:
SQL Error: ORA-00936: falta una expresión


PD:Lo he probado también suprimiendo los DISTINCT a los campos de cálculo.

Saludos
« Última modificación: 3 Marzo 2010, 18:47 pm por noobdai » En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Registros duplicados
« Respuesta #7 en: 3 Marzo 2010, 17:58 pm »





SELECT
     EMPRESA.CIFNIF,
     CABALBARAN.CLIENTE,
     CLIENTES.NOMBRE,
     DETALBARAN.IDALBARAN,
     CABALBARAN.FECHA,
     SUM(DETALBARAN.CANTIDAD*DETALBARAN.PRECIO) AS "TOTAL_BRUTO",
SUM((DETALBARAN.CANTIDAD*DETALBARAN.PRECIO)*DETALBARAN.DESCUENTO/100)  AS "TOTAL_DESCUENTO"

FROM
     EMPRESA,
     CLIENTES,
     DETALBARAN,
     CABALBARAN

WHERE
    CABALBARAN.CLIENTE =16
    AND CABALBARAN.FECHA BETWEEN '13/01/10' AND '15/01/10'
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE = CABALBARAN.CLIENTE
    AND CABALBARAN.IDALBARAN=DETALBARAN.IDALBARAN
    AND CLIENTES.IDCLIENTE=CABALBARAN.CLIENTE
GROUP BY (EMPRESA.CIFNIF,  CABALBARAN.CLIENTE, CLIENTES.NOMBRE, DETALBARAN.IDALBARAN, CABALBARAN.FECHA )

En línea

noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Registros duplicados
« Respuesta #8 en: 3 Marzo 2010, 18:58 pm »

ajjajaja  :o ;-) bieeeeeeen

Gracias ^Tifa^ ya ha funcionado.
Voy a intentar corregir otras sentencias que tengo para ver si puedo solucionar este mismo problema.

¿Me podrías enviar tu correo por MP,por si tengo problemas?

Muchas Gracias
Saludos ;D
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Registros duplicados
« Respuesta #9 en: 3 Marzo 2010, 19:54 pm »

De nada  ;)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines