Hola.
Tengo la tabla "posicionesmesas" (es un proyecto de restaurante) con los campos "mesa", "x", "y" y "tipo".
En el campo "mesa" guardo el número de la mesa; en los campos "x" e "y" guardo las coordenadas de las mesas (en realidad, de los botones que las representan) y en "tipo" guardo "p" si es el valor predeterminado o "a" si es la posición actual.
Entonces, en la tabla puedo tener lo siguiente:
mesa x y tipo
1 210 210 p
2 540 210 p
3 800 210 p
4 210 500 p
5 540 790 p
6 800 1020 p
1 210 210 a
2 360 210 a
3 800 210 a
4 210 500 a
5 540 790 a
6 800 1020 a
En este ejemplo tengo seis mesas dispuestas en tres columnas y tres filas. Los registros cuyo campo "tipo" tienen valor "p" son los que utilizo para que, luego de haber modificado la posición actual de las mesas (valor "a"), se puedan volver a poner en la posición predeterminada.
Ahora bien, lo que necesito es saber si hay forma de hacer el cambio en una sola consulta SQL (trabajo con MySQL).
Podría hacer lo siguiente:
Tabla.Open "SELECT mesa, x, y FROM posicionesmesas WHERE tipo = 'p'"
For i = 1 to 6
base.Execute "UPDATE posicionesmesas SET x = " & Tabla!x & ", y = " & Tabla!y & " WHERE mesa = " & Tabla!mesa & " AND tipo = 'a'"
Tabla.MoveNext
Next i
Pero no me gusta. Estoy seguro que debe haber una forma de hacer eso en una sola consulta. Probé poniendo lo siguiente pero no funcionó.
base.Execute "UPDATE posicionesmesas pm SET x = (SELECT x FROM posicionesmesas pm2 WHERE pm2.mesa = pm.mesa AND pm2.tipo = 'p') WHERE tipo = 'a'"¿Saben si se puede hacer lo que quiero?
Muchas gracias.
Jerónimo