Ver Mensaje Individual
  #13 (permalink)  
Antiguo 07/01/2013, 04:41
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Ayudar con query sql

A ver:
1) esto que dices que quieres
Cita:
quiero saber ¿quiénes son los dnis que comparten algúna ip?, el resultado que sería en este caso y es el que me gustaría obtener es:

dni1
dni2
Si tu problema fuera solo el modo de presentación, resolverías la salida de ese GROUP_CONCAT con programación.
Si solo quieres mostrar los dni que aparecen referidos a una misma IP y mostrándo solo los DNI, no sabrás a qué IP se refieren y habrá algún caso en que un DNI esté referido a dos o más IPs y no sepas cuando te aparezca que eso ocurre. Debes mostrar el DNI y la IP a la que se refiere. Eso te lo proporcionaba la consulta anterior, pero si quieres que se muestre de otra manera, intenta esto, pero no antes de indexar el campo DNI, y también el de IP. No lo he probado, pero seguro que será algo más lento que el anterior, dado que se trata de una subconsulta.
Código MySQL:
Ver original
  1.  t2.DNI,
  2.  t2.IP
  3.     FROM tabla t2
  4.      (SELECT
  5.          IP,
  6.         COUNT(*) total
  7.            FROM tabla
  8.             GROUP BY IP
  9.                   HAVING total > 1)t1
  10.   ON t2.IP = t1.IP ORDER BY t2.IP, t2.DNI

Tu consulta
Código MySQL:
Ver original
  1. SELECT DISTINCT dni total
  2.     FROM tabla
  3.     GROUP BY ip HAVING total >1
no puede devolverte nada porque la consulta es realmente extraña, lo que haces, creo, es:
1) primero agrupas por IP, con lo que te quedarían solo un registro de cada IP, el primero almacenado, con lo que perderías por ej. el registro donde guradas dni2 con la IP1
2) Luego haces como total un distinct DNI, de nuevo una agrupación, que esta vez eliminará todas las segundas IP referidas a un mismo DNI
3) Finalmente buscas los distintos DNI que te han quedado que sean mayor que 1, algo difícil, pues el DNI es una cadena alfanumérica (¿no?), pues imagino que incluyes la letra, y además lo guardas, como es lógico, en un campo VARCHAR. La necesidad del casting para la comparación, salvo que interprete el número como carácter, y el hecho de no tratarse el DNI de un número, imposibilita la devolución de resultados o se eterniza.
Prueba la otra consulta y nos dices si sale lo que quieres