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

problema con una consulta

Estas en el tema de problema con una consulta en el foro de Mysql en Foros del Web. compañeros necesito una favor estoy haciendo una consulta en mysql sencilla que es: SELECT * FROM `formula_medica` where id_cita='7' y me arroja los siguiente resultados ...
  #1 (permalink)  
Antiguo 12/07/2013, 06:56
 
Fecha de Ingreso: julio-2013
Mensajes: 16
Antigüedad: 11 años, 4 meses
Puntos: 0
problema con una consulta

compañeros necesito una favor estoy haciendo una consulta en mysql sencilla que es: SELECT * FROM `formula_medica` where id_cita='7' y me arroja los siguiente resultados


2 id_formula 7 id_cita 123 paciente acetamenofen medicamento1 ibuprofeno medicamento2 amoxacilina medicamento3 bipirona medicamento4
3 id_formula 7 id_cita 123 paciente diovan medicamento1 tiroxin medicamento2

lo que esta en negrita es el nombre de los campos de la tabla llamada formula_medica

pero necesito que los dos registros me salgan en una sola linea y no se como hacer ya que es una tabla de medicamentos y es cuando y DR manda mas de cuadro medicamentos le agradezco que me ayuden gracias

y me gustaria que me saliera en una sola linea pero no se como hacerlo se que se pueden cambiar los nombre de los campo pero hasta hay se

Última edición por capredinson; 12/07/2013 a las 07:08
  #2 (permalink)  
Antiguo 12/07/2013, 07:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: problema con una consulta

La consulta es sencilla, pero la tabla está muy mal diseñada como para hacerla fácil.
Los medicamentos deberían estar en otra tabla relacionada con el tratamiento, con un registro por cada medicamento. Entonces saldría muy sencilla.
Así como está, no va a ser una consulta simple.

¿Puedes modificar esa estructura de datos?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/07/2013, 07:41
 
Fecha de Ingreso: julio-2013
Mensajes: 16
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: problema con una consulta

si gnzsoloyo los medicamentos estan en otra tabla en esta tabla de formula medica solo muestra el codigo del medicamento lo que paso es que lo puse a si para que lo pudieran identificar lo que quiero es que si vez que hay dos registro con el mismo id_cita y quiero que esos dos registro poderlo mostrar en un solo registro
  #4 (permalink)  
Antiguo 12/07/2013, 09:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: problema con una consulta

A lo que me refiero es que no deben bajo ningún concepto crearse columnas como medicamento1, medicamento2, medicamento3, etc. Eso es un error de diseño severo, y hace que la consulta no se pueda agrupar como quieres.
la tabla formula_medica debebería tener una tabla intermedia con medicamentos que relacionase a la formula con cada medicamento, ya que la relación entre la formula y los medicamentos es de cardinalidad N:N y obligatoriamente requiere una tabla específica.
Con una tabla con esa relación, sólo se requeriría usar una función de agrupamiento para lograr lo que quieres.
Pero así como la tienes, no sirve, al menos de una forma sencilla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/07/2013, 10:09
 
Fecha de Ingreso: julio-2013
Mensajes: 16
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: problema con una consulta

gracias por aclararme la ese error y ahora otra pregunta pero de php es lo siguiente.

tengo un campo llamado cedula paciente y necesito que cuando el usuario termine de digital su cedula a paresca en un campo que se encuentra oculto el nombre de ese paciente
  #6 (permalink)  
Antiguo 12/07/2013, 10:34
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 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.
  #7 (permalink)  
Antiguo 12/07/2013, 10:45
 
Fecha de Ingreso: julio-2013
Mensajes: 16
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: problema con una consulta

ya lo publique en el tema de php pero nadien me ha contestado y lo necesito urgente y gracias por su colaboracion

Etiquetas: sql
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 13:41.