Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2015, 10:56
Avatar de JuJoGuAl
JuJoGuAl
 
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Pregunta Bucle para hacer Select usando Arrays

Buenas tardes amigos tengo una duda y nose si es MySQL o php donde tendria que consultar asi que decido irme primero por PHP, les cuento.

Tengo 3 tablas que necesito consultar:
Clientes
Código MySQL:
Ver original
  1. mysql> select * from sadmint_clientes limit 5;
  2. +------------+------------+-------------+---------------------------------------
  3. -+-------+-----+
  4. | codigo     | cod_resp   | cod_cliente | nombre
  5.  | tipo  | act |
  6. +------------+------------+-------------+---------------------------------------
  7. -+-------+-----+
  8. | 0000000001 | 0000002503 | J001230726  | PDVSA PETROLEO, S.A. - PLANES DE SALUD
  9.  | PDVSA | V   |
  10. | 0000000002 | 0000002562 | J000123072  | PDVSA DESARROLLO SOCIAL SUSTEN
  11.  | PDVSA | V   |
  12. | 0000000003 | 0000000178 | J000000130  | PDVSA - LAS SALINAS
  13.  | PDVSA | V   |
  14. | 0000000004 | 0000000180 | J000000132  | PDVSA - CARDON
  15.  | PDVSA | V   |
  16. | 0000000005 | 0000000181 | J000000133  | PDVSA - AMUAY
  17.  | PDVSA | V   |
  18. +------------+------------+-------------+---------------------------------------
  19. -+-------+-----+
Servicios:
Código MySQL:
Ver original
  1. mysql> select * from sadmint_clientes limit 5;
  2. +------------+------------+-------------+---------------------------------------
  3. -+-------+-----+
  4. | codigo     | cod_resp   | cod_cliente | nombre
  5.  | tipo  | act |
  6. +------------+------------+-------------+---------------------------------------
  7. -+-------+-----+
  8. | 0000000001 | 0000002503 | J001230726  | PDVSA PETROLEO, S.A. - PLANES DE SALUD
  9.  | PDVSA | V   |
  10. | 0000000002 | 0000002562 | J000123072  | PDVSA DESARROLLO SOCIAL SUSTEN
  11.  | PDVSA | V   |
  12. | 0000000003 | 0000000178 | J000000130  | PDVSA - LAS SALINAS
  13.  | PDVSA | V   |
  14. | 0000000004 | 0000000180 | J000000132  | PDVSA - CARDON
  15.  | PDVSA | V   |
  16. | 0000000005 | 0000000181 | J000000133  | PDVSA - AMUAY
  17.  | PDVSA | V   |
  18. +------------+------------+-------------+---------------------------------------
  19. -+-------+-----+
y Sol_servicios
Código MySQL:
Ver original
  1. mysql> select * from solc_servicios limit 3;
  2. +------------+------------+------------+------------+--------+------------------
  3. --+-------------------+------------+------------+----------+--------+-----------
  4. -+
  5. | cod_solc   | cliente    | cargo      | paciente   | status | unidad_solicitant
  6. e | unidad_ejecutante | fecha      | articulo   | cantidad | precio | admision
  7.  |
  8. +------------+------------+------------+------------+--------+------------------
  9. --+-------------------+------------+------------+----------+--------+-----------
  10. -+
  11. | 0000000001 | 0000002503 | 0003745605 | 0000092416 | A      | TINT
  12.   | TINT              | 2015-02-02 | I000003710 |    -1.00 | 352.00 | 0000914578
  13.  |
  14. | 0000000002 | 0000002503 | 0003745605 | 0000092416 | A      | TINT
  15.   | TINT              | 2015-02-02 | I000003710 |    -1.00 | 352.00 | 0000914578
  16.  |
  17. | 0000000003 | 0000067215 | 0003715801 | 0000295923 | C      | ADMC
  18.   | QUIR              | 2015-02-10 | I000003710 |     1.00 | 352.00 | 0000916646
  19.  |
  20. +------------+------------+------------+------------+--------+------------------
  21. --+-------------------+------------+------------+----------+--------+-----------
  22. -+
  23. 3 rows in set (0.05 sec)
Esos servicios ejecutados (solc_servicios) estan clasificados por un departamento que aparece en la tabla sadmint_servicios, y otra clasificacion que es el tipo de cliente que aparece en la tabla sadmint_clientes.

Por tal debo de hacer un Inner Join donde capture los datos de estos clientes para los departamentos.

En departamentos manejo unos cuantos (laboratorio, banco de sangre, resonancia, etc) y en tipo de cliente manejo (seguros, empresas, particular...)

Entonces pense en armar un array (en php) donde se encuentren cada unidad

Código PHP:
Ver original
  1. $uni_ar=array();
  2.     array_push($uni_ar,"BANCO DE SANGRE","LABORATORIO","HEMODINAMIA");
y en un clico foreach hacer este SQL:

Código MySQL:
Ver original
  1. SELECT SUM(sol.cantidad*sol.precio)as monto, SUM(sol.cantidad) as cuenta, COUNT(DISTINCT sol.paciente) as pacientes FROM solc_servicios sol INNER JOIN sadmint_clientes c ON sol.cliente=c.cod_resp INNER JOIN sadmint_servicios s ON sol.articulo=s.cod_serv WHERE YEAR(sol.fecha)=$year AND MONTH(sol.fecha)=$month AND s.dep='$departamento' AND C.TIPO='$Tipo_Cliente'"
haciendo uno por cada tipo de cliente.

Pero me da la impresion que el proceso es lento y nose si existirá una forma mas viable/rápida/eficaz de hacer esto que hago.

Si se necesita saber que es lo que quiero necesito:
-Monto total de estudios por cada Departamento (segun tipo de cliente)
-Cantidad de estudios por departamento (segun tipo de cliente)
-Cantidad de pacientes por departamento (segun tipo de cliente)

Alguien podria darme una mano con esto? Gracias

Última edición por JuJoGuAl; 15/04/2015 a las 10:56 Razón: Verdadero Post