El día de ayer se nos ha presentado un problema con respecto a una base de datos, teniendo una tabla de documentos ‘docs’, una de usuarios ‘user’, y una que relaciona muchos a muchos, nuestra tabla llamada ‘user_docs’

user

id user cedula
1 A 12345678
2 B 87654321
3 C 34567867
4 D 45656768

docs

id Doc
1 12345678_A
2 12345678_B
3 45656768_A
4 45656768_B
5 87654321_A
6 87654321_B
7 87654321_A
8 87654321_A

user_docs

id Id_user Id_doc
1 1 1
2 1 2
3 2 7
4 2 8

pero relacionar manualmente cada usuario con su respectivo documento, presentaba una tarea muy tediosa (en realidad eran cientos de usuarios), por lo tanto intentamos establecer un código en SQL para que desarrollara dicha tarea, encontrándonos con el primer problema de buscar los usuarios que no tenían asignado ningún documento, pero con la salvedad que dichos usuarios no estarían en la tabla user_docs, por lo tanto se genero el siguiente código:

SELECT user.id FROM user LEFT JOIN user_docs ON user.id=user_docs.user_id WHERE user_docs.user_id is null

Obteniendo como resultado:

id
3
4

el cual toma todos los id de la tabla user, y los compara con su respectiva foreign key, presentada en la tabla ‘user_docs’, y en caso dado de que no exista, el valor sera null, y así obtendremos dichos elementos user que no contengan archivos, ya solucionando esto, se implementó un código para relacionar los archivos, que para nuestra facilidad solo era el mismo numero de cédula añadiéndole un argumento, e insertar los datos a la tabla de user_docs, cada id de user, con su respectivo id en el archivo de docs.

Logrando:

user_docs

id Id_user Id_doc
1 1 1
2 1 2
3 2 7
4 2 8
5 3 5
6 3 6
7 4 3
8 4 4

Espero sea de ayuda…