Tag Archives: delete

Cómo utilizar JOIN en sentencias UPDATE o DELETE.

Una práctica muy recomendable antes de lanzar una sentencia UPDATE o DELETE sobre un subconjunto de tuplas, es probar a realizar la proyección, afinando las condiciones de restricción para el subconjunto (mediante una sentencia WHERE). Cuando nos encontramos ante una condiciones sencillas, reutilizar la misma clausula WHERE es trivial. Pero qué sucede cuando queremos utilizar funciones de composición (JOIN) para restringir el conjunto de datos.

Ejemplo para UPDATE, donde se puede ver como se han utilizado varios JOINs en el bloque de referencia a la table (table_reference en el manual de MySql):

UPDATE table1 T1 INNER JOIN table2 T2 ON T1.id = T2.id INNER JOIN table3 T3 ON T3.other_id = T2.other_id INNER JOIN table4 T4 ON T4.category = T3.category SET T1.readed = 0 WHERE T1.type = 'X' AND T1.category  = 'A';

Ejemplo para DELETE. En este caso después del DELETE hay que especificar la tabla o tablas (multi-delete):

DELETE T2 FROM table2 T2 ON T1.id = T2.id INNER JOIN table3 T3 ON T3.other_id = T2.other_id INNER JOIN table4 T4 ON T4.category = T3.category WHERE T1.type = 'X' AND T1.category  = 'A';

Espero que estos ejemplos os sirvan de ayuda.

NOTA: Todos los ejemplos se han ejecutado en un servidor MySql version 5.1.

Actualización

Ejemplo para MS SQL 2005:

UPDATE table1 SET T1.readed = 0 FROM table1 T1 INNER JOIN table2 T2 ON T1.id = T2.id INNER JOIN table3 T3 ON T3.other_id = T2.other_id INNER JOIN table4 T4 ON T4.category = T3.category  WHERE T1.type = 'X' AND T1.category  = 'A';

Vivir sin Facebook

Qué utilidad tiene una red social: ¿Tener 1.000 amigos? ¿Colgar 500 fotos?… Seguro que alguien le encuentra la utilidad, pero yo a día de hoy no la he encontrado. Si quiero hacer microblogging utilizo mi cuenta de Twitter, en lugar de cambiar mi estado para decir tonterías o suscribirme a grupos sin sentido. Si quiero tomar una cerveza con un amig@, cojo el teléfono e intento quedar sin enviar una invitación a un evento. Si quiero colgar fotos utilizo Flickr o Picassa, o monto una cena en casa para aburrir a mis amig@s – con fotos – mientras tomamos una cervezas y nos reímos. Si quiero mantener el contacto con colegas de profesión/estudios pues que mejor que LinkedIn. Y si tengo amig@s a 2.000 kilómetros y quiero saber de ell@s pues les envío una postal, una carta o les llamo por VoIP – Skype, etc -.

Con todo esto, hace unos meses desactive todas las notificaciones que genera Facebook para tener un poco de silencio. Y hoy he dicho adiós a “mis amig@s” en Facebook y he empezado el trámite, que concluirá en 14 días, para eliminar mi cuenta/perfil de Facebook.

Otro dato curioso es que las personas con las que más me relaciono, son las personas con las que menos contacto tengo por medio de una red social.