Tabla con 6 y otra con 4

Tengo dos tablas, y en cada una de ellas tengo códigos de producto, la única diferencia es que una tiene cuatro y la otra tiene un código de 6 dígitos, por ejemplo
110101, 110102, 110103, 110104, 110105
110106, 110107, 110108, 110109, 110110
Todos estos códigos están dentro del grupo 1101, ¿si deseo aplicarle a estos productos (de 6 dígitos el dato global que uno le asigne al 1101 como puede uno hacer eso?, es decir el dato que uno asigne al 1101, va a ser el mismo que se utilizara para calcular estos: 110101, 110102, 110103, 110104, 110105
110106, 110107, 110108, 110109, 110110,
te lo pregunto porque tengo una tablita con 1509 productos a 6 dígitos y uno de los escenarios que poder seleccionar por categoría, pero no se me ocurre nada, tal vez aplicando el MID, espero que me puedas dar una mano con esto, y muchas Gracias por la ayuda que me diste, me fue de mucha utilidad, eso no lo he podido ver en ningún lado, de nevó gracias
1

1 respuesta

Respuesta
1
Bueno mira no es tan complicado
¿Lo único que estamos haciendo en la fórmula es lo siguiente
como lo que intentas es pasar los datos de una tabla a otra
pero los datos de una tabla son de 4 dígitos y tu los quieres pasar como datos de 6 dígitos... ok?
Bueno entonces ejecutamos la instrucción para incercion de nuevos datos de SQL la cual es "INSERT INTO" con esta le decimos a la fórmula a que tabla insertaremos en el caso del ejemplo que te puse es "TABLE1" y a que campos lo haremos que en este caso ese parámetro es (CODIGOCUENTA, [DATO DE LA CUENTA])
y luego de decimos que la información que vamos a guardar se origina de un select que es el SELECT que vez después de los campos a donde se insertara
Bueno pues en ese select que vez ahí ("SELECT '00' + NOCUENTA, NOCUENTA
FROM CUENTA;") puedes observar que los datos los estoy llamando de una tabla que se llama "CUENTA" esa es la tabla de donde yo quiero pasar mis datos a la otra nueva tabla ("TABLE1") pero en esa tabla el campo de "NOCUENTA" SOLO TIENE 4 DÍGITOS Y A DONDE YO LO VOY A PASAR QUIERO QUE PASE CON 6 POSICIONES COMO IMAGINO QUE EL CAMPO LO TIENES DECLARADO COMO TIPO DE DATO "TEXT" entonces hacemos una concatenación de cadenas
y le digo que concatene 2 ceros ('00') para completar el tamaño de 6 caracteres que deseo que pasen y eso lo hago donde le digo "'00' + NOCUENTA" esa suma se hará com sumar cadenas de caracteres y arrojara un valor de 6 posiciones la cual entrara a TABLE1 en su primer campo que tenemos (CODIGOCUENTA) el otro campo que vez ahí fue solo para completar el ejemplo pero ahí se graba de forma normal un segundo dato al segundo campo de TABLE1 recuerda que todos los campos que deseas que pasen de una tabla a otra los debes de declarar en el select que vez abajo...
Bueno espero te sirva...
Es que donde entro en conflicto es que si el dato que yo le asigne a este código 1101, por ejemplo una tasa del 15%, ¿se le asignara a todos aquellos códigos o productos que comiencen por 1101? Es que, esa es la duda, ¿el código que me diste es como si yo pasara el dato del código 1101 a uno que fuera 110100 es así?
Disculpa por ser majadero, y gracias por tomarte el tiempo para hacerme entender, gracias
Bueno ok como ahora si llegamos a la comprensión de que lo que quieres es actualizar esa tabla el código seria el siguiente:
UPDATE tabla_a_actualizar
SET ColumnaPorcentaje = (SELECT TP.porcentaje
FROM Tabla_Porcentajes AS TP
WHERE TP.CodigoProd = '1101')
WHERE tabla_a_actualizar.codigoProducto LIKE '1101*'
Automáticamente actualiza todas las lineas cuyo código de producto comience con 1101 sin importar lo que sigue que en este caso se simboliza con el *
Muchísimas Gracias, y si eso es, quiero que se actualece todos los datos de la tabla, muchas gracias y disculpa las molestias del caso
Solo aclarame si esto...
Tu deseas que se le hacigne una taza del 15% a todos los productos cuyo código
comience con 1101 sin importar los otros 2 dígitos del código
¿Es decir que lo que quieres hacer es una actualización de datos en esa tabla...?
¿Y quieres actualizar porcentajes de descuento...?
¿Pero qué esos porcentajes salgan de otra tabla...?
¿Pregunto lo ultimo esto lo puedo incluir en un siclo for verdad? ¿Para asegurarme de que se use la actualización para los 8 grupos verdad? ¿En logar de darle el valor fijo se lo puedo dar por un arreglo?
Exactamente, eso es, bueno no lo había pensado en otra tabla pero viéndolo podría ser mejor, te explico porque te hago la consulta, es más que todo para montar mi proyecto de tesis, soy graduado en Economía, y lo que quiero es combinar diferentes elementos apra obtener un resultado, y uno de ellos es que uno pueda jugar para hacer las combinaciones, por ejemplo hay una donde no existe ningún efecto de tasa, otro donde el efecto de la tasa es general (corre igual para todos) otro que es por categoría por eso te decía del código de 4 dígitos, pero necesito que se asigne el valor que tiene ese código al que tiene 6, sin importar los otros 2 dígitos del código como bien decís vos y luego ya cuando comience el proceso el lo hace a nivel detallado pues algunos bienes o productos tienen o pagan impuestos y otros no, pero no sabia como vaciar los datos, de tal manera que cuando los cambie actualice.
Si, tu puedes incluir la instrucción de update en un ciclo imagino que lo quieres hacer para actualizar todo en un solo paso
Y por cada paso del ciclo cambiar el código de articulo '1101' por uno diferente a cada paso
e ir actualizando por grupos de códigos, puedes definir un arreglo con un listado de los códigos de los grupos e ir recorriendo este dato con el ciclo el cual lo concatenas a la función sql en donde veas que tiene que ir el código del articulo y la función se ejecutara perfectamente
Bueno mira la verdad no entendí muy bien tu enunciado
corrígeme si me equivoco pero tu quieres unir dos tablas una de códigos de productos con longitud 6 y otra de productos con longitud 4
si el caso fuese que le quieres quitar a la de 6 dos posiciones de izquierda a derecha y unirlo a los de la primera tabla entonces si utilizas el MID y la función de union de tablas UNION de la siguiente forma
Este es un ejemplo basado en unas tablas de una base de bancos.
(SELECT MID(BANCO,1,2) AS CODIGOSBANCOS
FROM banco)UNION(SELECT MID(NoCUENTA,1,2) AS CODIGOSBANCOS FROM CUENTA);
Acá en este ejemplo el NoCuenta es un text de 16 posiciones y el otro es un text 10 posiciones pero de ambos voy a tomar solo las 2 primeras posiciones.
Es que lo que quiero es que tome los datos de la tabla de 4 posiciones y los vacíe en la que tiene 6 posiciones, por eso te decía que si el 1101 tiene el valor de una tasa de impuestos de 15% entonces:
Código impuesto
110101, 15
110102, 15
110103, 15
110104, 15
110105 15
110106, 15
110107, 15
110108, 15
110109, 15
110110 15
Ves esto es o que esoy tratando de hacer, claro son más categorías, para ser un poco más exacto son 8 categorías de 4 dígitos que tratará de alimentar una tabla de 1509 productos, la idea es tener una tabla en donde me almacene las diferentes tasas que puedo tener para un producto en general.
Si lo que necesitas es vaciar una categoría de 4 dígitos en una de 6 entonces no es tan difícil porque puedes agregar ceros para completar el tamaño de los datos
INSERT INTO TABLE1 (CODIGOCUENTA, [DATO DE LA CUENTA])
SELECT '00' + NOCUENTA, NOCUENTA
FROM CUENTA;
Con esta función podrás agregar todos los datos de una tabla en otra en un solo proceso y media vez el tamaño de los datos a agregar sea menor que la capacidad del receptor no tendrás ningún problema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas