Atascado con una consulta SQL

Buenas tardes, a ver si alguien puede por favor arrojar luz en un tema que me tiene parado.
Tengo hecha una consulta sencilla para añadir descuentos en una tabla de LINEASALBARANCLIENTE recogiéndolos de otra tabla DTOSVENTASFAMILIA_ y previamente buscando el codigocliente de la tabla CABECERAALBARANCLIENTE, en función de que tenga descuento por familia y subfamilia o solo por familia. En la tabla de DTOSVENTASFAMILIA sólo aparecen los clientes que tiene tienen algún descuento.
El caso es que me funciona bien para los clientes que SI tienen descuentos, pero además le imputa descuentos aleatoriamente en líneas de clientes que NO tienen ningún descuento.
Yo no soy capaz de encontrar el fallo, más cuando no es constante, es decir hay albaranes de clientes que NO tiene descuento y en algunos de ellos lo pone y en otros NO. Algo se me está escapando pero no soy capaz de averiguar qué es.
Esta es la consulta en cuestión:
UPDATE    LineasAlbaranCliente
SET              [%Descuento] = c.[%Descuento1]
FROM         CabeceraAlbaranCliente AS b INNER JOIN  LineasAlbaranCliente ON b.NumeroAlbaran = LineasAlbaranCliente.NumeroAlbaran INNER JOIN   DtosVentasFamilias_ AS c ON b.CodigoCliente = c.CodigoCliente AND LineasAlbaranCliente.CodigoFamilia = c.CodigoFamilia
WHERE     (LineasAlbaranCliente.CodigoSubfamilia = c.CodigoSubFamilia) OR
(LineasAlbaranCliente.CodigoSubfamilia = '')
Respuesta
¿Dónde estas preguntando que tenga descuento? ¿Hora es consulta la haces a un cliente o todos al mismo tiempo?
Perdona no sé si voy a saber contestarte, ahora no estoy preguntando si tiene o no descuento, directamente hacemos que nos ponga el descuento si se cumple la condición de que la familia y subfamilia de LINEASALBARANCLIENTE se corresponda para ese cliente con la tabla DTOSVENTASFAMILIA. Esa que he puesto es la consulta que hago, me la proporcionaron a través de un foro ya que mis conocimientos de SQL son muy muy limitados.
Entiendo que está haciendo la consulta sobre todos los clientes a la vez pero como te digo no tengo mucha idea.
Así como dificl pero te recomiendo que te leas un manual de sql por que a veces son cosas triviales que tu puedes resolver en par minutos.. según tu join preguntas:
1. Que el código de cliente sea igual en las dos tablas
2. Que numeroalabran sea igual en las dos tablas.
3. Que el codigosubfamilia sea igual en las dos tablas que que ese código sea vacío...
¿No sera que el problema esta en la 3 condición?
Bueno es que hay clientes que tienen descuento para toda una familia de productos y otros en cambio tienen descuento por familia y subfamilia concreta, este es el motivo.
Siento que no puedas ayudarme con este asunto, seguiré investigando. Gracias de todas formas.
El problema lo tienes con los where del select,.. mira bien que debes preguntar en la consulta y criteruos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas