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

como unir dos consultas

Estas en el tema de como unir dos consultas en el foro de Mysql en Foros del Web. Buenas noches de nuevo compañeros ahora me salio otra inconveniente, tengo estas dos consultas @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT  REMD.NO_REM , REMD.SUC_REM , ...
  #1 (permalink)  
Antiguo 17/11/2011, 19:31
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
como unir dos consultas

Buenas noches de nuevo compañeros ahora me salio otra inconveniente, tengo estas dos consultas
Código MySQL:
Ver original
  1. SELECT  REMD.NO_REM, REMD.SUC_REM, REMD.CSE_PROD as clase, REMD.CVE_PROD as clave, REMD.UNIDAD, REMD.CANT_SURT, REMD.VALOR_PROD, REMD.SUBT_PROD, PRODUCTO.DESC_PROD as descripcion,
  2.     REMC.STATUS_REM, REMC.FALTA_REM, REMC.SUC_REM,
  3.     SUM(REMD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(REMD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(REMD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  4.     ROUND((SUM(REMD.SUBT_PROD) / SUM(REMD.CANT_SURT)),2) AS DIVISION
  5.     FROM REMD
  6.     LEFT JOIN PRODUCTO ON REMD.CVE_PROD=PRODUCTO.CVE_PROD
  7.     LEFT JOIN REMC ON REMD.NO_REM=REMC.NO_REM
  8.     WHERE REMD.SUC_REM='MOC' AND REMC.SUC_REM='MOC' AND (REMC.STATUS_REM='Emitida' OR REMC.STATUS_REM='Facturada' OR REMC.STATUS_REM='Parcial')
  9.     AND REMC.FALTA_REM BETWEEN '2011-09-01' AND '2011-09-30'  
  10.     GROUP BY REMD.CVE_PROD
  11.     ORDER BY REMD.CVE_PROD

y esta
Código MySQL:
Ver original
  1. SELECT NVENTASD.CVE_SUC, NVENTASD.NO_FAC, NVENTASD.CSE_PROD AS clase, NVENTASD.UNIDAD, NVENTASD.CVE_PROD AS clave, NVENTASD.VALOR_PROD, NVENTASD.CANT_SURT, NVENTASD.SUBT_PROD, PRODUCTO.DESC_PROD AS descripcion,
  2.     NVENTASC.STATUS_FAC, NVENTASC.FALTA_FAC, NVENTASC.CVE_SUC,
  3.     SUM(NVENTASD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(NVENTASD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(NVENTASD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  4.     ROUND((SUM(NVENTASD.SUBT_PROD) / SUM(NVENTASD.CANT_SURT)),2) AS DIVISION
  5.     FROM NVENTASD
  6.     LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  7.     LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  8.     WHERE NVENTASD.CVE_SUC='HER' AND NVENTASC.CVE_SUC='HER' AND NVENTASC.STATUS_FAC='Pagada' AND NVENTASC.FALTA_FAC BETWEEN '2011-09-01' AND '2011-09-30'
  9.     GROUP BY NVENTASD.CVE_PROD
  10.     ORDER BY NVENTASD.CVE_PROD

como las puedo unirlas o sumarlas para que me den el total de Sumado de las cantidades surtidas y totales? ... me entienden .. espero su ayudaa .. graciass
  #2 (permalink)  
Antiguo 18/11/2011, 09:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: como unir dos consultas

Hola edgar_cln:

Tus consultas no son sencillas, por lo que es sin información de tus tablas ni de los resultados que regresan las consultas es complicado tratar de ayudarte... postea qué es lo que están regresando las consultas para poder ayudarte... dinos por qué campos se relacionarían las dos consultas y cómo estarías esperando la salida

Saludos
Leo.
  #3 (permalink)  
Antiguo 18/11/2011, 11:15
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

Hola Leo, muchas gracias por la ayuda pasada y por prestar atencion en esta, como puse en el post de arriba, la primer consulta me arroja una serie de datos asi clave del produccto, descripcion, medida, cantidad, precio unitario y total la segunda consulta igual, la unica diferencia es que en la primera es sobre ventas de credito y la segunda es sobre ventas al contado, lo que quiero yo es sumar o juntar esas dos consultas para que me de un total de cuanto es lo que vendi
  #4 (permalink)  
Antiguo 18/11/2011, 11:37
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

En si para ser mas Explicito la primer consulta me arroja lo siguiente:

Clase |Clave |Articulo |UM |Cantidad |VtaProm |VentaTot
ANZUELOS |A1-130 |ANZUELO MUSTAD 2330-8 |PIEZA |200 |1.28 |256.28

la segunda consulta le pido los mismos datos y me los arroja:

Clase |Clave |Articulo |UM |Cantidad |VtaProm |VentaTot
ANZUELOS |A1-090 |ANZUELO MUSTAD 2330-4 |PIEZA |10 |4.23 |42.29


si en la prrimer consulta tengo unos articulos y el segunda otros, quisiera que me los mostrara y juntar los que coincidan de las dos consultas y que de todo me arroje un total contado de las consultas, ya lo e estado haciendo pero solo me muestra los articulos que coiciden de las dos consultas y si quiero eso pero tmb que me muestre los articulos que no, osea que si en credito vendi tal articulo que me lo muestre no importando si de contado no vendi ese mismo producto, ojala y me entiendan, gracias !!!
  #5 (permalink)  
Antiguo 18/11/2011, 11:59
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: como unir dos consultas

Hola de nuevo:

No entendí bien cómo relacionarías tus tablas, es decir, con tus datos de ejemplo ambos pertenecen a la clase ANZUELOS, pero ¿cómo deseas la salida? si entendí bien tu salida debería la unión de las dos consultas cierto???

checa esto a ver si es lo que necesitas:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla1 (id INT, descripcion VARCHAR(10), cantidad INT);
  2. Query OK, 0 rows affected (0.11 sec)
  3.  
  4. mysql> INSERT INTO tabla1 VALUES (1, 'uno', 10), (2, 'dos', 20),
  5.     -> (3, 'tres', 30);
  6. Query OK, 3 rows affected (0.06 sec)
  7. Records: 3  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> SELECT * FROM tabla1;
  10. +------+-------------+----------+
  11. | id   | descripcion | cantidad |
  12. +------+-------------+----------+
  13. |    1 | uno         |       10 |
  14. |    2 | dos         |       20 |
  15. |    3 | tres        |       30 |
  16. +------+-------------+----------+
  17. 3 rows in set (0.00 sec)
  18.  
  19. mysql> CREATE TABLE tabla2 (id INT, descripcion VARCHAR(10), cantidad INT);
  20. Query OK, 0 rows affected (0.09 sec)
  21.  
  22. mysql> INSERT INTO tabla2 VALUES  (2, 'dos', 15), (3, 'tres', 25),
  23.     -> (4, 'cuatro', 40);
  24. Query OK, 3 rows affected (0.02 sec)
  25. Records: 3  Duplicates: 0  Warnings: 0
  26.  
  27. mysql> SELECT * FROM tabla2;
  28. +------+-------------+----------+
  29. | id   | descripcion | cantidad |
  30. +------+-------------+----------+
  31. |    2 | dos         |       15 |
  32. |    3 | tres        |       25 |
  33. |    4 | cuatro      |       40 |
  34. +------+-------------+----------+
  35. 3 rows in set (0.00 sec)
  36.  
  37. mysql> SELECT T.id, T.descripcion, SUM(T.cantidad) total
  38.     -> FROM (
  39.     -> SELECT * FROM tabla1
  40.     -> UNION ALL
  41.     -> SELECT * FROM tabla2
  42.     -> ) T
  43.     -> GROUP BY T.id, T.descripcion;
  44. +------+-------------+-------+
  45. | id   | descripcion | total |
  46. +------+-------------+-------+
  47. |    1 | uno         |    10 |
  48. |    2 | dos         |    35 |
  49. |    3 | tres        |    55 |
  50. |    4 | cuatro      |    40 |
  51. +------+-------------+-------+
  52. 4 rows in set (0.01 sec)

Observa que los registros 2 y 3 se repiten en ambas tablas, el 1 sólo aparece en la tabla1 y el 4 sólo en la tabla2... los registros que aparen en la tabla SE SUMARIZAN, para dejar un registro único... si esta no es la salida que pretendes coloca también cómo quieres la salida a partir de los datos que pusiste de ejemplo.

Saludos
Leo
  #6 (permalink)  
Antiguo 18/11/2011, 12:11
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

Hola Leo, checare lo que me pusistes, en si las tablas se relacionarian por el campo "CVE_PROD"... por que es el unico identificador que tengo para unir los datos de la primer conslta con la segunda
  #7 (permalink)  
Antiguo 18/11/2011, 12:39
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

Andele Leo, como esta :

Código MySQL:
Ver original
  1. SELECT T.id, T.descripcion, SUM(T.cantidad) total
  2.     FROM (
  3.     SELECT * FROM tabla1
  4.     UNION ALL
  5.     SELECT * FROM tabla2
  6.     ) T
  7.     GROUP BY T.id, T.descripcion;

es lo que ocupo pero pues si te das cuenta en una consulta junto campos de tres tablas, comole haria en ese caso, estoy intentadole pero no me salee
  #8 (permalink)  
Antiguo 18/11/2011, 13:24
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

Código MySQL:
Ver original
  1. SELECT T.CSE_PROD, T.CVE_PROD, T.DESC_PROD, T.UNIDAD, SUM(T.CANT_SURT) AS CANTIDAD, SUM(T.VALOR_PROD) AS VALOR, SUM(T.SUBT_PROD) AS TOTALVALOR
  2. SELECT  REMD.NO_REM, REMD.SUC_REM as ho, REMD.CSE_PROD as clase, REMD.CVE_PROD as clave, REMD.UNIDAD, REMD.CANT_SURT, REMD.VALOR_PROD, REMD.SUBT_PROD, PRODUCTO.DESC_PROD as descripcion,
  3.     REMC.STATUS_REM, REMC.FALTA_REM, REMC.SUC_REM
  4.     #SUM(REMD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(REMD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(REMD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  5.     #ROUND((SUM(REMD.SUBT_PROD) / SUM(REMD.CANT_SURT)),2) AS DIVISION
  6.     FROM REMD
  7.     LEFT JOIN PRODUCTO ON REMD.CVE_PROD=PRODUCTO.CVE_PROD
  8.     LEFT JOIN REMC ON REMD.NO_REM=REMC.NO_REM
  9.     WHERE REMD.SUC_REM='MOC' AND REMC.SUC_REM='MOC' AND (REMC.STATUS_REM='Emitida' OR REMC.STATUS_REM='Facturada' OR REMC.STATUS_REM='Parcial')
  10.     AND REMC.FALTA_REM BETWEEN '2011-09-01' AND '2011-09-30'  
  11.     #GROUP BY REMD.CVE_PROD
  12. SELECT  NVENTASD.CVE_SUC, NVENTASD.NO_FAC, NVENTASD.CSE_PROD AS clase, NVENTASD.CVE_PROD AS clave, NVENTASD.UNIDAD, NVENTASD.CANT_SURT, NVENTASD.VALOR_PROD, NVENTASD.SUBT_PROD, PRODUCTO.DESC_PROD AS descripcion,
  13.     NVENTASC.STATUS_FAC, NVENTASC.FALTA_FAC, NVENTASC.CVE_SUC
  14.     #SUM(NVENTASD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(NVENTASD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(NVENTASD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  15.     #ROUND((SUM(NVENTASD.SUBT_PROD) / SUM(NVENTASD.CANT_SURT)),2) AS DIVISION
  16.     FROM NVENTASD
  17.     LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  18.     LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  19.     WHERE NVENTASD.CVE_SUC='MOC' AND NVENTASC.CVE_SUC='MOC' AND NVENTASC.STATUS_FAC='Pagada' AND NVENTASC.FALTA_FAC BETWEEN '2011-09-01' AND '2011-09-30'
  20.     #GROUP BY NVENTASD.CVE_PROD
  21.     )T
  22.     GROUP BY T.CVE_PROD;

la hize asi, despues de varios intentos que me marcaban error, esta tardo un buen pero me arrojo este error:

Error Code : 1054
Unknown column 'T.CSE_PROD' in 'field list'
(0 ms taken)
  #9 (permalink)  
Antiguo 18/11/2011, 14:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: como unir dos consultas

Hola de nuevo:

Tal vez deberías haber comenzado por investigar un poco cómo funciona el unión no crees??? el error es bastante típico y estoy seguro que hubieras dado con la respuesta en GOOGLE o en cualquier otro buscador, ojo con eso.

Una de las condiciones de las uniones es que las consultas deben regresar el mismo número de campos y cada columna debe corresponder en tipo y longitud con su par, cuando los nombres de las columnas son iguales no hay problema, pone ese mismo nombre de columna en la tabla resultante, pero ¿Qué pasa cuando el nombre no es igual?...

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla1 (id INT, descripcion VARCHAR(10), cantidad INT);
  2. Query OK, 0 rows affected (0.13 sec)
  3.  
  4. mysql> INSERT INTO tabla1 VALUES (1, 'uno', 10), (2, 'dos', 20);
  5. Query OK, 2 rows affected (0.06 sec)
  6. Records: 2  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> SELECT * FROM tabla1;
  9. +------+-------------+----------+
  10. | id   | descripcion | cantidad |
  11. +------+-------------+----------+
  12. |    1 | uno         |       10 |
  13. |    2 | dos         |       20 |
  14. +------+-------------+----------+
  15. 2 rows in set (0.00 sec)
  16.  
  17. mysql> CREATE TABLE tabla2 (id INT, otra_descripcion VARCHAR(10), cantidad INT);
  18.  
  19. Query OK, 0 rows affected (0.09 sec)
  20.  
  21. mysql> INSERT INTO tabla2 VALUES  (2, 'dos', 15), (3, 'tres', 25);
  22. Query OK, 2 rows affected (0.02 sec)
  23. Records: 2  Duplicates: 0  Warnings: 0
  24.  
  25. mysql> SELECT * FROM tabla2;
  26. +------+------------------+----------+
  27. | id   | otra_descripcion | cantidad |
  28. +------+------------------+----------+
  29. |    2 | dos              |       15 |
  30. |    3 | tres             |       25 |
  31. +------+------------------+----------+
  32. 2 rows in set (0.02 sec)
  33.  
  34. mysql> SELECT * FROM tabla1
  35.     -> UNION ALL
  36.     -> SELECT * FROM tabla2;
  37. +------+-------------+----------+
  38. | id   | descripcion | cantidad |
  39. +------+-------------+----------+
  40. |    1 | uno         |       10 |
  41. |    2 | dos         |       20 |
  42. |    2 | dos         |       15 |
  43. |    3 | tres        |       25 |
  44. +------+-------------+----------+
  45. 4 rows in set (0.00 sec)

Observa que en la primer tabla el segundo campo se llama DESCRIPCION mientras que en la segunda se llama OTRA_DESCRIPCION. La tabla resultante TOMA EL NOMBRE DE LA PRIMER TABLA, por lo tanto si hago referencia al campo OTRA_DESCRIPCION marcará el error que te aparece.

Código MySQL:
Ver original
  1. mysql> select * from
  2.     -> (SELECT * FROM tabla1
  3.     -> UNION ALL
  4.     -> SELECT * FROM tabla2) T order by T.otra_descripcion;
  5. ERROR 1054 (42S22): Unknown column 'T.otra_descripcion' in 'order clause'

Cómo solucionas esto? bueno, pues asignarle EL MISMO ALIAS A LAS DOS PARTES DE LA CONSULTA. Checa cómo se están uniendo tus campos_

Código MySQL:
Ver original
  1. +--------------------------------+--------------------------------+----------+
  2. | campo1                         | campo2                         | campo3   |
  3. +--------------------------------+--------------------------------+----------+
  4. | NVENTASD.CVE_SUC               | REMD.NO_REM                    | ERROR    |
  5. | NVENTASD.NO_FAC                | REMD.SUC_REM AS ho             | ERROR    |
  6. | NVENTASD.CSE_PROD AS clase     | REMD.CSE_PROD AS clase         | CORRECTO |
  7. | NVENTASD.CVE_PROD AS clave     | REMD.CVE_PROD AS clave         | CORRECTO |
  8. | NVENTASD.UNIDAD                | REMD.UNIDAD                    | CORRECTO |
  9. | NVENTASD.CANT_SURT             | REMD.CANT_SURT                 | CORRECTO |
  10. | NVENTASD.VALOR_PROD            | REMD.VALOR_PROD                | CORRECTO |
  11. | NVENTASD.SUBT_PROD             | REMD.SUBT_PROD                 | CORRECTO |
  12. | PRODUCTO.DESC_PROD AS descripc | PRODUCTO.DESC_PROD AS descripc | CORRECTO |
  13. | NVENTASC.STATUS_FAC            | REMC.STATUS_REM                | ERROR    |
  14. | NVENTASC.FALTA_FAC             | REMC.FALTA_REM                 | ERROR    |
  15. | NVENTASC.CVE_SUC               | REMC.SUC_REM                   | ERROR    |
  16. +--------------------------------+--------------------------------+----------+

En todos los campos marcados como error asignales un alias igual.

Saludos
Leo.
  #10 (permalink)  
Antiguo 18/11/2011, 17:36
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

Leo muchisimas gracias, de esta forma lo intente primero:
Código MySQL:
Ver original
  1. (SELECT  REMD.NO_REM AS NUMERO, REMD.SUC_REM AS SUCURSAL, REMD.CSE_PROD AS CLASE, REMD.CVE_PROD AS CLAVE, REMD.UNIDAD, REMD.CANT_SURT, REMD.VALOR_PROD, REMD.SUBT_PROD, PRODUCTO.DESC_PROD AS DESCRIPCION,
  2.         REMC.STATUS_REM AS STATU, REMC.FALTA_REM AS FECHA, REMC.SUC_REM AS SUC
  3.         #SUM(REMD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(REMD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(REMD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  4.         #ROUND((SUM(REMD.SUBT_PROD) / SUM(REMD.CANT_SURT)),2) AS DIVISION
  5.         FROM REMD
  6.         LEFT JOIN PRODUCTO ON REMD.CVE_PROD=PRODUCTO.CVE_PROD
  7.         LEFT JOIN REMC ON REMD.NO_REM=REMC.NO_REM
  8.         WHERE REMD.SUC_REM='MOC' AND REMC.SUC_REM='MOC' AND (REMC.STATUS_REM='Emitida' OR REMC.STATUS_REM='Facturada' OR REMC.STATUS_REM='Parcial')
  9.         AND REMC.FALTA_REM BETWEEN '2011-09-01' AND '2011-09-30'  )
  10.         #GROUP BY REMD.CVE_PROD
  11.     UNION ALL
  12.    ( SELECT  NVENTASD.NO_FAC AS NUMERO, NVENTASD.CVE_SUC AS SUCURSAL, NVENTASD.CSE_PROD AS CLASE, NVENTASD.CVE_PROD AS CLAVE, NVENTASD.UNIDAD, NVENTASD.CANT_SURT, NVENTASD.VALOR_PROD, NVENTASD.SUBT_PROD, PRODUCTO.DESC_PROD AS DESCRIPCION,
  13.         NVENTASC.STATUS_FAC AS STATU, NVENTASC.FALTA_FAC AS FECHA, NVENTASC.CVE_SUC AS SUC
  14.        #SUM(NVENTASD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(NVENTASD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(NVENTASD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  15.        #ROUND((SUM(NVENTASD.SUBT_PROD) / SUM(NVENTASD.CANT_SURT)),2) AS DIVISION
  16.         FROM NVENTASD
  17.         LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  18.         LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  19.         WHERE NVENTASD.CVE_SUC='MOC' AND NVENTASC.CVE_SUC='MOC' AND NVENTASC.STATUS_FAC='Pagada' AND NVENTASC.FALTA_FAC BETWEEN '2011-09-01' AND '2011-09-30'
  20.         #GROUP BY NVENTASD.CVE_PROD
  21.         )
  22.         ORDER BY CLAVE

me sale todo desglosado pero esta correcto ya hize cuenta y todo bien, pero lo intente hacer con SUM y GROUP by y no me sale....es lo unico que me falta, lei un poco de la Sintaxis UNION y por eso me salio de esa manera.......me podrias auxiliar con el SUM y GROUP by ... gracias
  #11 (permalink)  
Antiguo 22/11/2011, 09:54
Avatar de edgar_cln  
Fecha de Ingreso: agosto-2010
Ubicación: Sierra Sinaloense
Mensajes: 122
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: como unir dos consultas

Gracias Leo, este puente me ayudo mucho a relajarme y a pensar y me quedo por finnn, comparto la ideaaa
Código MySQL:
Ver original
  1. SELECT T.NUMERO, T.SUCURSAL, T.CLASE, T.CLAVE, T.UNIDAD, ROUND((SUM(CANT_SURT)),2) CANTIDADTOTAL, ROUND((SUM(SUBT_PROD) / SUM(CANT_SURT)),2) AS DIVIDOS, ROUND((SUM(SUBT_PROD)),2) TOTAL, T.DESCRIPCION,
  2.         T.STATU, T.FECHA, T.SUC, ROUND((SUM(SUBT_PROD) / SUM(CANT_SURT)),2) AS DIVIDOS
  3.     FROM
  4. (SELECT  REMD.NO_REM AS NUMERO, REMD.SUC_REM AS SUCURSAL, REMD.CSE_PROD AS CLASE, REMD.CVE_PROD AS CLAVE, REMD.UNIDAD, REMD.CANT_SURT, REMD.VALOR_PROD, REMD.SUBT_PROD, PRODUCTO.DESC_PROD AS DESCRIPCION,
  5.         REMC.STATUS_REM AS STATU, REMC.FALTA_REM AS FECHA, REMC.SUC_REM AS SUC
  6.         #SUM(REMD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(REMD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(REMD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  7.         #ROUND((SUM(REMD.SUBT_PROD) / SUM(REMD.CANT_SURT)),2) AS DIVISION
  8.         FROM REMD
  9.         LEFT JOIN PRODUCTO ON REMD.CVE_PROD=PRODUCTO.CVE_PROD
  10.         LEFT JOIN REMC ON REMD.NO_REM=REMC.NO_REM
  11.         WHERE REMD.SUC_REM='MOC' AND REMC.SUC_REM='MOC' AND (REMC.STATUS_REM='Emitida' OR REMC.STATUS_REM='Facturada' OR REMC.STATUS_REM='Parcial')
  12.         AND REMC.FALTA_REM BETWEEN '2011-09-01' AND '2011-09-30'  
  13.         #GROUP BY REMD.CVE_PROD
  14.  
  15.     UNION ALL
  16.  
  17.     SELECT  NVENTASD.NO_FAC AS NUMERO, NVENTASD.CVE_SUC AS SUCURSAL, NVENTASD.CSE_PROD AS CLASE, NVENTASD.CVE_PROD AS CLAVE, NVENTASD.UNIDAD, NVENTASD.CANT_SURT, NVENTASD.VALOR_PROD, NVENTASD.SUBT_PROD, PRODUCTO.DESC_PROD AS DESCRIPCION,
  18.         NVENTASC.STATUS_FAC AS STATU, NVENTASC.FALTA_FAC AS FECHA, NVENTASC.CVE_SUC AS SUC
  19.         #SUM(NVENTASD.CANT_SURT) AS SUMCANTSURT, ROUND((SUM(NVENTASD.VALOR_PROD)),2) AS SUMVALORPROD, ROUND((SUM(NVENTASD.SUBT_PROD)),2) AS SUMSUBT_PROD,
  20.         #ROUND((SUM(NVENTASD.SUBT_PROD) / SUM(NVENTASD.CANT_SURT)),2) AS DIVISION
  21.         FROM NVENTASD
  22.         LEFT JOIN PRODUCTO ON NVENTASD.CVE_PROD=PRODUCTO.CVE_PROD
  23.         LEFT JOIN NVENTASC ON NVENTASD.NO_FAC=NVENTASC.NO_FAC
  24.         WHERE NVENTASD.CVE_SUC='MOC' AND NVENTASC.CVE_SUC='MOC' AND NVENTASC.STATUS_FAC='Pagada' AND NVENTASC.FALTA_FAC BETWEEN '2011-09-01' AND '2011-09-30'
  25.         #GROUP BY NVENTASD.CVE_PROD
  26.         )as T
  27.     GROUP BY T.CLAVE ORDER BY T.CLAVE

muchas gracias leo que sin tu ayuda no podia haberlo logrado, le debo una pisteada compaaa jaja

Etiquetas: join, select
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 07:53.