Hola, tengo un pequeño problema y no se como resolverlo de la mejor manera. Si por sql directamente o con un script de perl.<br>Tengo una tabla en mysql que tiene un id que puede aparecer una o mas veces, y una dirección asociada. <br>
ejemplo:<br>ISI:000088317500003
    LIP LISBON, LISBON, PORTUGAL.<br>ISI:000088317500003 OTRA DIFERENTE, SPAIN.<br>ISI:000222193200001
    BRADLEY UNIV, PEORIA, IL 61625 USA.<br>ISI:000240793800012
    CIC BIOGUNE, BIZKAIA, SPAIN<br><br>Ahora bien, se requiere que por cada id se sepa si hay mas de uno. Si hay mas de uno saber si tienen o no spain. En el caso de los ejemplo anteriores la tercera y la cuarta dirección tienen el id una sola vez. La primera y la segunda se repite el id, y uno tiene spain.<br>
<br>El resultado final seria algo como esto:<br>ISI:000088317500003
    LIP LISBON, LISBON, PORTUGAL. CON_COLAB INT<br>
ISI:000088317500003 OTRA DIFERENTE, SPAIN. CON_COLAB INT<br>
ISI:000222193200001
    BRADLEY UNIV, PEORIA, IL 61625 USA. SIN_COLAB INT<br>
ISI:000240793800012
    CIC BIOGUNE, BIZKAIA, SPAIN CON_COLAB NAC<br>
ISI:000240793800012 OTRA DIFERENTE, SPAIN.&nbsp; CON_COLAB NAC<br>
ISI:999240769852324
    CIC BIOGUNE, BIZKAIA, SPAIN SIN_COLAB NAC<br><br>Para llegar a esa solución ideal, creo que el procedimiento seria:<br>1. Identificar si el id esta una o mas veces<br>2. Si esta una vez ver si es nacional (spain) o internacional<br>
2.1 si es nacional imprime o agrega a la tabla: SIN_COLAB - NAC<br>2.2 si es internacional imprime o agrega a la tabla: SIN_COLAB - INT<br>3. Si está mas de una vez<br>3.1 si todas las direcciones son spain imprime o agrega a la tabla: CON_COLAB - NAC<br>
3.2 si una o mas son diferentes a spain imprime o agrega a la tabla: CON_COLAB - INT<br><br>Se que en mysql se puede lograr haciendo varias consultas anidadas y usando sentencias como el CASE, por lo que el servidor estará (o eso creo) procesando constantemente cuando se ejecute la consulta para ver los datos.<br>
<br>Con perl se puede crear una tabla nueva y meter el resultado y cuando se agreguen nuevos registros ejecutarlo nuevamente. Lo que no se es que para poder ver el id con todos los registros asociados tendría que crear un array con todas las direcciones y luego ir recorriendo ese array para ver si cumple o no los patrones. El problema es que estoy hablando de una tabla que tiene mas de 5 millones de direcciones.<br>
¿Alguna idea? Agradezco sus comentarios de antemano, quizas me estoy ahogando en un vaso de agua y no me he dado cuenta.<br><br><br><br>