Necesito código SQL para resolver el problema combinación de tablas, se describe en el apartado siguiente:Necesita un enfoque instrucción SQL en la combinación de mesas pero las entradas siempre con la identificación única
tabla de datos antigua: mesa de edad
name version status lastupdate ID
A 0.1 on 6/8/2010 1
B 0.1 on 6/8/2010 2
C 0.1 on 6/8/2010 3
D 0.1 on 6/8/2010 4
E 0.1 on 6/8/2010 5
F 0.1 on 6/8/2010 6
G 0.1 on 6/8/2010 7
tabla nuevos datos: tabla nueva
name version status lastupdate ID
A 0.1 on 6/18/2010
#B entry deleted
C 0.3 on 6/18/2010 #version_updated
C1 0.1 on 6/18/2010 #new_added
D 0.1 on 6/18/2010
E 0.1 off 6/18/2010 #status_updated
F 0.1 on 6/18/2010
G 0.1 on 6/18/2010
H 0.1 on 6/18/2010 #new_added
H1 0.1 on 6/18/2010 #new_added
la diferencia de los nuevos datos y la fecha antigua:
entrada B elimina
versión de entrada C actualiza
nuevo añadido
Lo que quiero siempre es mantener el ID actualizado el estado de la entrada E de entrada
C1/H/H1 - Relación de nombre mapeo de edad tabla de datos sin importar cómo cambiaron los datos más tarde, también conocido como el nombre siempre tiene un número de identificación único vinculado con él.
Si la entrada tiene una actualización, actualice los datos, si la entrada es nueva, inserte en la tabla y luego proporcione una nueva ID única asignada. Si la entrada fue eliminada, elimine la entrada y no reutilice esa identificación más adelante.
Sin embargo, solo puedo usar SQL con una declaración simple de selección o actualización, entonces puede ser muy difícil para mí escribir dicho código, entonces espero que alguien con experiencia pueda dar instrucciones, no se necesitan detalles sobre las diferentes variantes SQL, el código sql estándar como muestra es suficiente.
¡Gracias de antemano!
Rgs
KC
======== me aparece mi proyecto sql aquí, pero no estoy seguro si funciona, alguien con experiencia comentario pls, gracias!
1.duplicate mesa antigua como TMP para almacenar actualizaciones
crean tmp tabla como seleccionar * de edad
2.Update en tmp donde el "nombre" es la misma en la tabla vieja y la nueva
actualización tmp donde el nombre de (seleccione el nombre de nuevo)
3.Inserte "nombre" diferente (viejo contra nuevo) en tmp y asignar nuevo ID
insertar en tmp (nombre de versión de estado lastupdate ID) establecer idvar = max (seleccionar max (id) de tmp) + 1 seleccionar * de (seleccionar nuevo.nombre nuevo.versión nuevo.Estado nuevo.última actualización nuevo.ID de viejo, nuevo donde old.name <> new.name)
4. eliminar las entradas eliminadas de la tabla tmp (tales como B)
eliminar en tmp donde (seleccione ???)
¿No tiene la ID en la nueva tabla de datos? – tzup
Su resultado de muestra no es indicativo de lo que espera dada su descripción. ¿Es el caso que quieres que las ID sigan siendo secuenciales? – Thomas
Además, ¿qué producto de base de datos y versión está usando? – Thomas