Foros del Web » Programando para Internet » PHP »

Bucle para hacer Select usando Arrays

Estas en el tema de Bucle para hacer Select usando Arrays en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/04/2015, 10:56
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 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

Etiquetas: arrays, bucle, select, usando
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:42.