Interactuar con 3 tablas a la vez

Buenos Días necesito hacer este cambio para poder implementar una solución de CRM postventa en mi empresa. Este CRM no me tiene en cuenta los descuentos que yo tengo asignados a mis clientes y genera los albaranes sin estos descuentos. La cuestión que necesito resolver es la siguiente:
Tengo 3 tablas con estos campos:
LINEASALBARAN Numeroalbaran
                                   Familia
                                   Subfamilia
                                   Descuento
CABECERAALBARAN numeroalbaran
                                   codigocliente
DESCUENTOS codigocliente
                                  familia
                                    Subfamilia
                                    Descuento
Se trata de repasar albaranes para imputar el descuento que cada cliente pueda tener asignado en los artículos.
Y lo que necesito es actualizar en la tabla LINEASALBARAN el campo descuento con el campo descuento que tenga ese cliente en la tabla DESCUENTOS (si es que le corresponde algún descuento en esa familia/subfamilia, puede que ni aparezca en la tabla por no tener ningún descuento asignado).
Lo complicado es que en la tabla LINEASALBARAN no tengo el campo codigocliente para poder ir directamente a buscarlo a la tabla DESCUENTOS sino que hay que averiguar ese campo en la tabla CABECERAALBARAN en base al campo numeroalbaran que sí que lo tengo en las líneas.
Para lo cual he de localizar primero a qué cliente corresponde esa línea de albarán mediante el campo LINEASALBARAN.numeroalbaran a través de la tabla CABECERAALBARAN buscar ese numeroalbaran y ver a qué codigocliente corresponde para luego buscar ese cliente en la tabla DESCUENTOS y comprobar si en esa familia y subfamilia le corresponde algún descuento y si es así ponerlo en la tabla LINEASALBARAN.
En fin no sé si me he explicado correctamente, para mí es un cuestión complicada ya mis conocimientos de SQL son escasos.
Muchas gracias por anticipado.

1 Respuesta

Respuesta
1
Una solución sencilla (existen muchas más) seria hacer:
update
        lineasalbaran
set
        lineasalbaran.descuento=c.descuento
from
       cabeceraalbaran b,
       descuentos c
where
              lineasalbaran.numeroalbaran=b.numeroalbaran
       and
              b.codigocliente=c.codigocliente
       and
              lineasalbaran.familia=c.familia
       and
              lineasalbaran.subfamilia=c.subfamilia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas