Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda con unicos y group by

Estas en el tema de Duda con unicos y group by en el foro de Mysql en Foros del Web. Buenas a todos, a qui sigo de lio haciendo mis pinitos con el mysql, sos cuento tengo una tbl con registros de este tipo SERIE ...
  #1 (permalink)  
Antiguo 26/05/2009, 17:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Duda con unicos y group by

Buenas a todos,

a qui sigo de lio haciendo mis pinitos con el mysql, sos cuento

tengo una tbl con registros de este tipo


SERIE FACTURA CLIENTE ARTICULO CANTIDAD PRECIO
A 10 1234 ART123 2 5
A 10 1234 ART124 2 5
A 10 1234 ART125 2 5
A 10 1234 ART126 2 5
B 10 1452 AR0265 2 5
B 10 1452 AR0266 2 5
B 11 2650 A94489 2 5
B 11 2650 A94489 2 5


De aqui quiero obtener este resultado en otra tabla, es decir, sacar las cabeceras de las facturas e insertarlas en otra tabla 'siempre y cuando no existan ya'

SERIE FACTURA
A 10
B 10
B 11


Estoy haciendo lo siguiente, que tenia hecho con acces mediante una consulta de unicos pero no me sale.


INSERT INTO CABECERA (FACTURA, SERIE)
(SELECT First(TBL1.FACTURA) AS UNICOFACTURA, First(TBL1.SERIE) AS UNICOSERIE FROM TBL1 GROUP BY TBL1.FACTURA, TBL1.SERIE)
LEFT JOIN CABECERAON (TBL1.UNICOFACTURA = CABECERA.FACTURA) AND (TBL1.UNICOSERIE = CABECERA.SERIE)
WHERE (((CABECERA.FACTURA) IS NULL) AND ((CABECERA.SERIE) IS NULL ))

Ahi queda eso....


(yo cuando me complico la vida me la complico de verdad ....)
  #2 (permalink)  
Antiguo 27/05/2009, 05:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda con unicos y group by

creo que con esto....

Código sql:
Ver original
  1. INSERT INTO CABECERA (SERIE, FACTURA)
  2. (SELECT  SERIE, FACTURA
  3. FROM TBL1
  4. GROUP BY TBL1.SERIE, TBL1.FACTURA) AS sbc
  5. LEFT JOIN CABECERA
  6. ON sbc.SERIE=CABECERA.SERIE
  7.   AND sbc.FACTURA=CABECERA.FACTURA
  8. WHERE CABECERA.FACTURA IS NULL
  9.      AND CABECERA.SERIE IS NULL



Sabes que lo suyo es hacerlo por el orden adecuado, primero creas la cabecera de la factura y luego entras las lineas....





Quim

Última edición por quimfv; 27/05/2009 a las 05:47
  #3 (permalink)  
Antiguo 27/05/2009, 07:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Probaré y os cuento,


muchas gracias

salu2
  #4 (permalink)  
Antiguo 27/05/2009, 17:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Buenas,

parece que no funciona, esto es lo que puse

INSERT INTO CABECERACOM (CO_TIENDA, BOLETIN)(SELECT CO_TIENDA, BOLETIN FROM TBLFILTRO GROUP BY TBLFILTRO.CO_TIENDA, TBLFILTRO.BOLETIN) AS UNICOS
LEFT JOIN CABECERACOM ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA AND UNICOS.BOLETIN=CABECERACOM.BOLETIN
WHERE CABECERACOM.BOLETIN IS NULL AND CABECERACOM.CO_TIENDA IS NULL ;

Estos son los campos reales, los otros les puse pa explicar mejor el ejemplo,

El error que me da:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS UNICOS LEFT JOIN CABECERACOM ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA AND UN' at line 1


En la tabla de origen TBLFILTRO tengo 8 registros, de los cuales me tiene que sacar solo 4 cabeceras
  #5 (permalink)  
Antiguo 28/05/2009, 04:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Buenas a todos,

Nada, es imposible no veo forma de que funcione, voy a seguir leyendo el foro a ver que encuentro.

Salu2
  #6 (permalink)  
Antiguo 28/05/2009, 12:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Buenas, ¿alguien sabría decirme que puede fallar aqui?

INSERT INTO CABECERACOM (CO_TIENDA, BOLETIN)(SELECT CO_TIENDA, BOLETIN FROM TBLFILTRO GROUP BY TBLFILTRO.CO_TIENDA, TBLFILTRO.BOLETIN) AS UNICOS
LEFT JOIN CABECERACOM ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA AND UNICOS.BOLETIN=CABECERACOM.BOLETIN
WHERE CABECERACOM.BOLETIN IS NULL AND CABECERACOM.CO_TIENDA IS NULL ;


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS UNICOS LEFT JOIN CABECERACOM ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA AND UN' at line 1


Salu2
  #7 (permalink)  
Antiguo 28/05/2009, 13:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda con unicos y group by

No debes cerrar el parentesis ahí.

Al insert le debes pasar todos los campos de la consulta.

INSERT INTO CABECERACOM (CO_TIENDA, BOLETIN)(SELECT CO_TIENDA, BOLETIN FROM TBLFILTRO GROUP BY TBLFILTRO.CO_TIENDA, TBLFILTRO.BOLETIN AS UNICOS
LEFT JOIN CABECERACOM ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA AND UNICOS.BOLETIN=CABECERACOM.BOLETIN
WHERE CABECERACOM.BOLETIN IS NULL AND CABECERACOM.CO_TIENDA IS NULL);

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 28/05/2009, 13:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Leches.....

voy a probar....
  #9 (permalink)  
Antiguo 28/05/2009, 13:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Demasiado bonito para ser verdad... seguimos en error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS UNICOS LEFT JOIN CABECERACOM ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA AND UN' at line 1
  #10 (permalink)  
Antiguo 28/05/2009, 13:31
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda con unicos y group by

Analizando un poco tu problema, veo que tienes varios errores de sintaxis.

Prueba esto:

Código mysql:
Ver original
  1. INSERT INTO CABECERACOM (CO_TIENDA, BOLETIN)
  2. ((SELECT CO_TIENDA, BOLETIN FROM TBLFILTRO GROUP BY TBLFILTRO.CO_TIENDA, TBLFILTRO.BOLETIN) AS UNICOS
  3. LEFT JOIN CABECERACOM
  4. ON UNICOS.CO_TIENDA=CABECERACOM.CO_TIENDA
  5. AND UNICOS.BOLETIN=CABECERACOM.BOLETIN
  6. CABECERACOM.BOLETIN IS NULL AND CABECERACOM.CO_TIENDA IS NULL);

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 28/05/2009, 13:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Probado...

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT CO_TIENDA, BOLETIN FROM TBLFILTRO GROUP BY TBLFILTRO.CO_TIENDA, TBLFILTR' at line 1


Explico un poco lo que quiero hacer...

De TBLFILTRO tengo que seleccionar los registros que no se repitan acorde con esos dos campos CO_TIENDA, BOLETIN, e insertarles 'si no existen ya' en CABECERABOL

PD: Ahora mismo CABECERABOL está vacío


Salu2
  #12 (permalink)  
Antiguo 28/05/2009, 13:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Creo que el problema está en la parte que dice: AS UNICOS no se porqué me da...

puede ser?
  #13 (permalink)  
Antiguo 28/05/2009, 14:33
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda con unicos y group by

Tus campos no los entiendo muy bien... pero mira esto, tal vez te abra un poco la mente de lo que quieres hacer.

Código mysql:
Ver original
  1. mysql> select *from nombres;
  2. +--------+------------+
  3. | nombre | apellidos  |
  4. +--------+------------+
  5. | daniel | aca cambia |
  6. | diego  | obando     |
  7. | diego  | alzate     |
  8. | diego  | obando     |
  9. | diego  | alzate     |
  10. +--------+------------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> insert into nombres2 (nombre,apellidos) select nombre,apellidos from nombres n group by nombre,apellidos;
  14. Query OK, 3 rows affected (0.02 sec)
  15. Records: 3  Duplicates: 0  Warnings: 0
  16.  
  17. mysql> select *from nombres2;
  18. +--------+------------+
  19. | nombre | apellidos  |
  20. +--------+------------+
  21. | daniel | aca cambia |
  22. | diego  | alzate     |
  23. | diego  | obando     |
  24. +--------+------------+
  25. 3 rows in set (0.00 sec)

Es esto lo que necesitas?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 28/05/2009, 15:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

eso es, pruebo y te cuento

gracias
  #15 (permalink)  
Antiguo 28/05/2009, 16:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Hola,

Parece que funciona bien, pero me falta una cosa:

"no insertar los campos si ya existen"

voy a investigar sobre ello
  #16 (permalink)  
Antiguo 28/05/2009, 16:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Una cosa,

que es la n que va delante de group by?
  #17 (permalink)  
Antiguo 28/05/2009, 17:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda con unicos y group by

Lo logré, ya funciona, no hay nada como leer y buscar....

La clave está en INSERT IGNORE y crear un indice de esos dos campos

INSERT IGNORE INTO cabecerabol (co_tienda, boletin) SELECT co_tienda, boletin FROM tblfiltro n GROUP BY co_tienda, boletin ;


Salu2
  #18 (permalink)  
Antiguo 28/05/2009, 21:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda con unicos y group by

Me alegra ejconan

Se me pasó el insert ignore.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:07.