Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/07/2012, 22:14
link01
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 13 años, 1 mes
Puntos: 0
Problemas con joins: la consulta me trae valores erroneos

tengo las siguientes tablas
consultas,
pacientes,
diagnosticos,
recetas,
medicamentos,
enfermedades

En las tabla consultas tiene los siguientes datos:
Código:
+--------+----------+------------+--------------+---------------------------+
| codigo | paciente | fecha      | motivo       | descripcion               |
+--------+----------+------------+--------------+---------------------------+
|      4 |       22 | 2012-07-23 | Es asmatico. | Se le receto salbultamol. |
+--------+----------+------------+--------------+---------------------------+
En pacientes:

Código:
+--------+--------+----------+----------+----------+------+---------------------------+--------------------+--------------+--------------+----------+-----------------+--------------+------+--------------+
| codigo | doctor | cedula   | nombre   | apellido | sexo | email                     | direccion          | telefono     | celular      | bbpin    | fechaNacimiento | nacionalidad | foto | lugarTrabajo |
+--------+--------+----------+----------+----------+------+---------------------------+--------------------+--------------+--------------+----------+-----------------+--------------+------+--------------+
|     22 |     25 | 12345678 | Gustavo  | Diaz     | M    | [email protected] | alma rosa          | 809-596-2351 | 849-450-2071 | no tiene | 1992-08-02      | rd           |      | asdasd       |
|     24 |     25 | 26382763 | Madeline | Guzman   | F    | [email protected]     | San isidro         | 8499634823   | 8093425734   | akh8sad  | 1990-11-12      | rd           |      | metro        |
|     27 |     27 | 9876543  | Adolfo   | Camilo   | M    | [email protected]        | jardines alma rosa | 8095962351   | 8495823723   | aksd83d  | 1992-02-08      | rd           | NULL | itla         |
|     63 |     25 | 1        | prueba   | Diaz     | M    | [email protected] | alma rosa          | 809-596-2351 | 849-450-2071 | no tiene | 1992-08-02      | rd           |      | itla         |
+--------+--------+----------+----------+----------+------+---------------------------+--------------------+--------------+--------------+----------+-----------------+--------------+------+--------------+
En diagnosticos:

Código:
+--------+----------+------------+----------+
| codigo | paciente | enfermedad | consulta |
+--------+----------+------------+----------+
|      2 |       24 |          5 |        4 |
+--------+----------+------------+----------+
En recetas

Código:
+--------+----------+-------------+----------+
| codigo | paciente | medicamento | consulta |
+--------+----------+-------------+----------+
|      1 |       22 |           4 |        4 |
+--------+----------+-------------+----------+
En medicamentos

Código:
+--------+-------------+------------------------------------------+
| codigo | nombre      | descripcion                              |
+--------+-------------+------------------------------------------+
|      3 | Aspirina    | Cura todo, dolor de cabeza, fiebre, etc. |
|      4 | Salbultamol | Para el asma.                            |
+--------+-------------+------------------------------------------+

El query es:

Código SQL:
Ver original
  1. SELECT consultas.codigo AS consulta, fecha, motivo, consultas.descripcion,
  2.        pacientes.codigo AS paciente, pacientes.cedula, pacientes.nombre, pacientes.apellido,
  3.        recetas.medicamento, medicamentos.nombre,
  4.        diagnosticos.enfermedad, enfermedades.nombre
  5. FROM consultas JOIN pacientes JOIN diagnosticos JOIN recetas JOIN medicamentos JOIN enfermedades
  6. ON consultas.paciente = pacientes.codigo
  7.    AND consultas.codigo = diagnosticos.consulta AND consultas.codigo = recetas.consulta
  8. WHERE consultas.codigo = 4 AND doctor = 25


Pero lo que me trae es:

Código:
+----------+------------+--------------+---------------------------+----------+----------+---------+----------+-------------+-------------+------------+--------+
| consulta | fecha      | motivo       | descripcion               | paciente | cedula   | nombre  | apellido | medicamento | nombre      | enfermedad | nombre |
+----------+------------+--------------+---------------------------+----------+----------+---------+----------+-------------+-------------+------------+--------+
|        4 | 2012-07-23 | Es asmatico. | Se le receto salbultamol. |       22 | 12345678 | Gustavo | Diaz     |           4 | Aspirina    |          5 | Asma   |
|        4 | 2012-07-23 | Es asmatico. | Se le receto salbultamol. |       22 | 12345678 | Gustavo | Diaz     |           4 | Salbultamol |          5 | Asma   |
+----------+------------+--------------+---------------------------+----------+----------+---------+----------+-------------+-------------+------------+--------+
Como ven las filas que me trae la consulta son casi identicos, a excepcion del campo "nombre" que le sigue a medicamento que (valga la redundancia) indica el nombre del medicamento. Según yo, solo debería traerme el medicamento Salbultamol que tiene el código 4, no la Aspira que tiene codigo 3 (ver tabla medicamentos), aunque en la primera fila del resultado Aspirina aparece con el código 4.

No entiendo porque esta pasando eso y que puedo hacer para solucionarlo.
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/