Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/07/2013, 10:34
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: problema con una consulta

Hola capredinson:

Coincido completamente con gnzsoloyo cuando dice que tienes un modelo de BD equivocado, pero en más de una ocasión me he enfrentado a situaciones donde no es posible modificar el modelo y tienes que trabajar con lo que hay... en tu caso, si puedes cambiar tus tablas y hacer lo que gnzsoloyo te recomienda sería excelente, pero si fuera el caso donde no puedes modificar tu modelo, podrías hacer uso de algunas funciones de agrupación para obtener algo que igual y te puede servir... Puedes "unir" tus campos de medicamentos con dos funciones... CONCAT_WS y GROUP_CONCAT... la primera sirve para primeramente las columnas, la segunda para unir varios registros a la vez... es decir, algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------------+---------+----------+--------------+--------------+--------------+--------------+
  3. | id_formula | id_cita | paciente | medicamento1 | medicamento2 | medicamento3 | medicamento4 |
  4. +------------+---------+----------+--------------+--------------+--------------+--------------+
  5. |          2 |       7 |      123 | acetamenofen | ibuprofeno   | amoxacilina  | bipirona    
  6. |          3 |       7 |      123 | diovan       | tiroxin      | NULL         | NULL         |
  7. +------------+---------+----------+--------------+--------------+--------------+--------------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT
  11.     ->    id_cita, paciente,
  12.     ->    GROUP_CONCAT(CONCAT_WS(',', medicamento1, medicamento2, medicamento3, medicamento4)) receta
  13.     -> FROM tabla
  14.     -> GROUP BY id_cita, paciente;
  15. +---------+----------+-------------------------------------------------------------+
  16. | id_cita | paciente | receta   |
  17. +---------+----------+-------------------------------------------------------------+
  18. |       7 |      123 | acetamenofen,ibuprofeno,amoxacilina,bipirona,diovan,tiroxin |
  19. +---------+----------+-------------------------------------------------------------+
  20. 1 row in set (0.00 sec)

Igual y es algo que te pueda servir.

En cuanto al segundo tema, se trata de un asunto de programación, no de Base de Datos... publica tu pregunta en el foro de PHP

Saludos
Leo.