Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/07/2012, 12:39
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: No imprimir doble los registros en una vista

Hola de nuevo cn16cn:

¿Te tomaste el tiempo para probar la consulta que te puse?... creo que no (podría apostar a que no lo hiciste)... Si la probaste y no funcionó sería conveniente que me dijeras qué es lo que estuvo mal, para tomarlo en cuenta.

Si estoy en lo correcto tienes algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM pacientes;
  2. +-------------+------------+------------+
  3. | id_paciente | ap_paterno | ap_materno |
  4. +-------------+------------+------------+
  5. |           1 | HERNANDEZ  | PEREZ      |
  6. |           2 | HERNANDEZ  | PEREZ      |
  7. +-------------+------------+------------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT
  11.     ->   ap_paterno, ap_materno,
  12.     ->   (SELECT COUNT(ID_paciente)
  13.     ->    FROM pacientes
  14.     ->    WHERE ap_paterno=ap_paterno AND ap_materno=ap_materno
  15.     ->   ) AS total_Integrantes
  16.     -> FROM pacientes;
  17. +------------+------------+-------------------+
  18. | ap_paterno | ap_materno | total_Integrantes |
  19. +------------+------------+-------------------+
  20. | HERNANDEZ  | PEREZ      |                 2 |
  21. | HERNANDEZ  | PEREZ      |                 2 |
  22. +------------+------------+-------------------+
  23. 2 rows in set (0.00 sec)

Esta consulta te está "duplicando" la información, pero no es porque debas utilizar DISTINCT sino PORQUE NO ESTÁS AGRUPANDO. Checa tu consulta utilizando DISTINCT y la consulta que te propuse, AGRUPANDO.

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   DISTINCT ap_paterno, ap_materno,
  3.     ->   (SELECT COUNT(ID_paciente)
  4.     ->    FROM pacientes
  5.     ->    WHERE ap_paterno=ap_paterno AND ap_materno=ap_materno
  6.     ->   ) AS total_Integrantes
  7.     -> FROM pacientes;
  8. +------------+------------+-------------------+
  9. | ap_paterno | ap_materno | total_Integrantes |
  10. +------------+------------+-------------------+
  11. | HERNANDEZ  | PEREZ      |                 2 |
  12. +------------+------------+-------------------+
  13. 1 row in set (0.00 sec)
  14.  
  15.  
  16. mysql> SELECT ap_paterno, ap_materno, COUNT(*) total_Integrantes
  17.     -> FROM pacientes
  18.     -> GROUP BY ap_paterno, ap_materno;
  19. +------------+------------+-------------------+
  20. | ap_paterno | ap_materno | total_Integrantes |
  21. +------------+------------+-------------------+
  22. | HERNANDEZ  | PEREZ      |                 2 |
  23. +------------+------------+-------------------+
  24. 1 row in set (0.00 sec)

El resultado es el el mismo, PERO LA CONSULTA CON AGRUPACIÓN ES MUCHO MÁS SENCILLA. Lo que tú estás haciendo en realidad son dos consultas, una general y una para obtener el COUNT, pero te repito que no es necesario.

Saludos
Leo.