Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/08/2011, 14:43
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: Mostrar nombres cuando el codigo existe dos veces

Hola de nuevo oscarbt:

Vayamos por partes... en primer lugar algo hay mal en tus datos, pues por ejemplo en tu tabla DGDIAGNO existe un registro con DIACODIGO = 2688, si embargo en la tabla HCINTERC lo estás poniendo como DIACODIGO = D688 . Por lo tanto NUNCA TE REGRESARÁ VALORES. No sé si fue error de dedo o hay alguna regla de negocio que no nos explicaste.

Segundo, en tu consulta estás manejando el campo AINCONSEC='0000700724', desde el post pasado te comenté que NO NOS DICES A QUÉ TABLA PERTENECE ESTE CAMPO, por lo tanto me es imposible tomarlo en cuenta.

Tercero, en tu tabla GEARESER estás manejando un registro con GASCODIGO = 3215, pero en la tabla HCINTERC tienes GASCODIGO1 = 3512 por lo tanto NUNCA REGRESARÁ VALORES PARA ESTE CASO.

Cuatro, en tu tabla HCINTERC tienes un registro con DIACODIGO = C961 pero en tu tabla DGDIAGNO NO TIENES NINGÚN REGISTRO ASIGNADO A ESTE CODIGO, por lo tanto TAMPOCO REGRESARÁ VALORES.

Tratando de adivinar cómo están realmente tus datos y sin considerar los aparentes "errores" que existen, la consulta deber funcionar, aquí te dejo un script de lo que estuve probando.

Código MySQL:
Ver original
  1. mysql> INSERT INTO GEARESER VALUES (1501, 'HOSPITALIZACION PISO 2'),
  2.     -> (2001, 'HOSPITALIZACION PISO 5'), (3215, 'TERAPIA INTENSIVA');
  3. Query OK, 3 rows affected (0.02 sec)
  4. Records: 3  Duplicates: 0  Warnings: 0
  5.  
  6. mysql> SELECT * FROM GEARESER;
  7. +-----------+------------------------+
  8. | GASCODIGO | GASNOMBRE              |
  9. +-----------+------------------------+
  10. |      1501 | HOSPITALIZACION PISO 2 |
  11. |      2001 | HOSPITALIZACION PISO 5 |
  12. |      3215 | TERAPIA INTENSIVA      |
  13. +-----------+------------------------+
  14. 3 rows in set (0.00 sec)
  15.  
  16. mysql> CREATE TABLE DGDIAGNO (DIACODIGO VARCHAR(5), DIANOMBRE VARCHAR(20));
  17. Query OK, 0 rows affected (0.09 sec)
  18.  
  19. mysql> INSERT INTO DGDIAGNO VALUES ('D688', 'OTRO EFECTOS ...'),
  20.     -> ('C961', 'LO QUE SEA ...');
  21. Query OK, 2 rows affected (0.03 sec)
  22. Records: 2  Duplicates: 0  Warnings: 0
  23.  
  24. mysql> SELECT * FROM DGDIAGNO;
  25. +-----------+------------------+
  26. | DIACODIGO | DIANOMBRE        |
  27. +-----------+------------------+
  28. | D688      | OTRO EFECTOS ... |
  29. | C961      | LO QUE SEA ...   |
  30. +-----------+------------------+
  31. 2 rows in set (0.00 sec)
  32.  
  33. mysql> CREATE TABLE HCINTERC (GASCODIGO INT, GASCODIGO1 INT,
  34.     -> DIACODIGO VARCHAR(5), HCUTIPDIA INT);
  35. Query OK, 0 rows affected (0.07 sec)
  36.  
  37. mysql> INSERT INTO HCINTERC VALUES (1501, 2001, 'D688', 1),
  38.     -> (1501, 3215, 'C961', 1);
  39. Query OK, 2 rows affected (0.03 sec)
  40. Records: 2  Duplicates: 0  Warnings: 0
  41.  
  42. mysql> SELECT * FROM HCINTERC H;
  43. +-----------+------------+-----------+-----------+
  44. | GASCODIGO | GASCODIGO1 | DIACODIGO | HCUTIPDIA |
  45. +-----------+------------+-----------+-----------+
  46. |      1501 |       2001 | D688      |         1 |
  47. |      1501 |       3215 | C961      |         1 |
  48. +-----------+------------+-----------+-----------+
  49. 2 rows in set (0.00 sec)
  50.  
  51. mysql> SELECT H.GASCODIGO, G1.GASNOMBRE, H.GASCODIGO1, G2.GASNOMBRE, D.DIANOMBRE
  52.     -> FROM HCINTERC H
  53.     -> INNER JOIN GEARESER G1 ON H.GASCODIGO = G1.GASCODIGO
  54.     -> INNER JOIN GEARESER G2 ON H.GASCODIGO1 = G2.GASCODIGO
  55.     -> INNER JOIN DGDIAGNO D ON D.DIACODIGO = H.DIACODIGO;
  56. +-----------+------------------------+------------+------------------------+----
  57. --------------+
  58. | GASCODIGO | GASNOMBRE              | GASCODIGO1 | GASNOMBRE              | DIA
  59. NOMBRE        |
  60. +-----------+------------------------+------------+------------------------+----
  61. --------------+
  62. |      1501 | HOSPITALIZACION PISO 2 |       2001 | HOSPITALIZACION PISO 5 | OTR
  63. O EFECTOS ... |
  64. |      1501 | HOSPITALIZACION PISO 2 |       3215 | TERAPIA INTENSIVA      | LO
  65. QUE SEA ...   |
  66. +-----------+------------------------+------------+------------------------+----
  67. --------------+
  68. 2 rows in set (0.00 sec)

Como podrás darte cuenta por las observaciones son muchos detalles que tendrías que aclararnos para darte una mejor respuesta. Ojalá que te sea de ayuda o que alguno de los demás foristas te apoye con la respuesta.

Saludos
Leo.