Inicio > Lenguaje SQL > gmenendez > ME ANULÉ, NECESITO AYUDAAA!!!

ME ANULÉ, NECESITO AYUDAAA!!!

Experto:
Usuario:
Fecha: 27/05/2008
Valoración: (5,00 sobre 5) Categoría: Lenguaje SQL
14/05/2008
el_coyote, usuario preguntando en Lenguaje SQL
Usuario
Tengo una tabla A con cuits y varios telefonos por cada uno, en otra tabla B tengo cuits y dos columnas para pegarle los telefonos, la prefunta es : como hago para pegarle los dos primeros telefonos que me aparecen en la tabla A a la tabla B?!?!?!

Gracia.
14/05/2008
el_coyote, experto respondiendo en Lenguaje SQL
Experto
Me quedan varias dudas:
1) La estructura de tabla A. Sería algo como : cuits, telefono y un posible juego de datos sería:
A,Tel1
A, Tel2
A, Tel3
B, Tel1
C, Tel1
C, Tel2
Supongo que la estructura de B sería: cuits, telefono1, telefono2
2) ¿ Como definís cuales son los 2 primeros telefónos de la tabla A ? Son cualquiera 2  de los que tenga cada cuits ?
Si mis suposiciones anteriores son correctas, yo lo resolvería con un algoritmo no con una única consulta sql.
Código PL/SQL (Oracle):
declaro cursor A sobre tabla_A ordenada por cuits, un contador numerico y cuits_procesando
(mismo tipo que cuits de tabla A y B)
inicializo cuits_procesando en algún valor que no pueda tener en la tabla A
loop cursor A
    si A.cuits_procesando != cuits_procesando
        seteo cuits_procesando = A.cuits
        inicializo contador a 1
    fin si
    si contador = 1
        actualizo telefono1 en tabla B con A.telefono para B.cuits = A.telefono
        incremento contador en 1
    sino
        si contador = 2
            actualizo telefono2 en tabla B con A.telefono para B.cuits = A.telefono
            incremento contador en 1
       fin si
    fin si
end loop;
14/05/2008
el_coyote, usuario preguntando en Lenguaje SQL
Usuario
perdoname pero no entendí bien que haces en los IF, las supociciones son correctas...
gracias.
15/05/2008
el_coyote, experto respondiendo en Lenguaje SQL
Experto
El primer IF controla si estoy procesando el mismo cuits ó cambió, el segundo y tercer IF me indica si tengo que llenar el telefono 1 ó 2 en tabla B para el cuits que se está recorriendo.
Esto es porque a priori no se cuantos telefonos tengo en la tabla A para cada cuits y tengo que llenar un máximo de 2 en la tabla B.
El algoritmo anterior se independiza de esos problemas.
Entonces para cada cuits de tabla A, si tengo 1 teléfonos en tabla A va a llenar SOLO  telefono1 de tabla B, si tengo 2 teléfonos en tabla A va a llenar los 2 campos de tabla B y si tengo 3 ó más teléfonos en tabla A después de tomar 2 de ellos para llenar los campos de tabla B ignoro el resto.
En palabras esto es lo que hace el loop con los IF's dentro.
27/05/2008
el_coyote, usuario preguntando en Lenguaje SQL
Usuario
Te agradezco muchisimo, me vino barbaro tu consejo.
GRACIAS.
Enlaces patrocinados