Por favor ayuda con consulta SQL y VB 6.0

04/10/2007 - 21:20 por Rebeca Abella | Informe spam
Hola a todos de nuevo,

Os cuento a ver si alguien me puede echar un cable (si es que es posible), y
perdonar si no me explico bien:

Tengo las siguientes tablas:

TERMINOS MAESTRO_CASAS_TERMINO

Id_Termino Id_maestro_casa_Termino
Nombre Id_Casa
Id_Termino


CASA MAESTRO_CASAS_PROPIETARIO

Id_Casa Id_maestro_casa_Termino
Nombre Id_Casa
Id_Propietario


PROPIEATARIOS

Id_Propietario
Nombre


Para el Termino="Madrid" tengo las casas= "Chalet1", "Chalet2" y "Chalet3"
A su vez para el "Chalet2" tengo el Propietario="Juan Manuel"

Mi pregunta es:

Necesito actualizar todas las casas del Termino="Madrid" el
Propietario="Juan Manuel"

Alguien me puede ayudar?
Utilizo VB 6.0, ADODB, contra SQL

Como os digo perdonar por si no me he explicado correctamente.

Os agradezco cualquier ayuda.

Un saludo

Rebeca

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
06/10/2007 - 01:36 | Informe spam
Hola Rebeca,

De verdad no tuve tiempo para reponder hasta ahora.

En SQL Server no contamos con una forma sencilla de insertar y/o actualizar
a la misma vez (pero si la tendremos en la version 2008 y el nombre de la
sentencia es MERGE). Asi que te recomiendo lo sgte:

1 - Borrar de la tabla [MAESTRO_CASAS_PROPIETARIO], todas las casas del
termino a cuya casa fue asignada a un propietario.

delete MAESTRO_CASAS_PROPIETARIO
where Id_Casa in (
select
Id_Casa
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'
)

2 - Luego insertar en la misma tabla, todas las casas de ese termino, pero
con el [id] del nuevo propietario. Recuerda usar una transaccion para que
todo este cambio sea atomico, o todo o nada.

declare @Id_Propietario int

set @Id_Propietario = (select Id_Propietario from PROPIEATARIOS where Nombre
= 'Juan Manuel')

insert into MAESTRO_CASAS_PROPIETARIO(Id_Casa, Id_Propietario)
select
Id_Casa,
@Id_Propietario
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'


AMB

"Rebeca Abella" wrote:

Hola a todos de nuevo,

Por favor, alguien puede echarme un cable con esta consulta?

Muchas gracias de antemano

Saludos

Rebeca

@microsoft.com...
>> Hola Rebeca,
>>
>> En este momento tengo que salir. Quizas mas tarde pueda continuar con la
>> ayuda.
>>
>> - Si una casa de un termino no esta en [MAESTRO_CASAS_PROPIETARIO],
>> entonces
>> se debe insertar en cuanto una casa de ese termino se asigna a un
>> propietario.
>>
>> - Si la casa ya esta en [MAESTRO_CASAS_PROPIETARIO], pero el propietario
>> no
>> es igual al asignado al termino, entonces hay que actualizarla.
>>
>> Esta correcto lo expuesto anteriormente?
>>
>> AMB
>>
>> "Rebeca Abella" wrote:
>>
>>> Hola Alejandro,
>>>
>>> Lo 1º es darte las gracias por tu ayuda.
>>>
>>> Si, si, eso es, me confundi con los campos de la tabla.
>>>
>>> Lo que necesito actualizar son todas las casas, es decir, en cuanto se
>>> asigna un propietario a esa casa, tengo que actualizar todas las casas
>>> del
>>> mismo termino con ese Propietario.
>>>
>>> Disculpa si no me he explicado bien.
>>>
>>> Saludos
>>>
>>> Rebeca
>>>
>>> "Alejandro Mesa" escribió en
>>> el
>>> mensaje news:
>>> > Hola Rebeca,
>>> >
>>> >> MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_maestro_casa_Termino
>>> >> Id_Casa
>>> >> Id_Propietario
>>> >
>>> > Por casualidad sera:
>>> >
>>> > MAESTRO_CASAS_PROPIETARIO
>>> >
>>> > Id_maestro_casa_propietario
>>> > Id_Casa
>>> > Id_Propietario
>>> >
>>> >
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >
>>> > Que es lo que necesitas actualizar?
>>> >
>>> > update
>>> > c
>>> > set
>>> > [?] = [?]
>>> > from
>>> > CASA as c
>>> > inner join
>>> > MAESTRO_CASAS_TERMINO mct
>>> > on c.Id_Casa = mct.Id_Casa
>>> > inner join
>>> > TERMINOS as t
>>> > on t.Id_Termino = mct.Id_Termino
>>> > inner join
>>> > MAESTRO_CASAS_PROPIETARIO mcp
>>> > on mcp.Id_Casa = c.Id_Casa
>>> > inner join
>>> > PROPIEATARIOS as p
>>> > on p.Id_Propietario = mcp.Id_Propietario
>>> > where
>>> > t.Nombre = 'Madrid'
>>> > and p.Nombre = 'Juan Manuel'
>>> >
>>> >
>>> > AMB
>>> >
>>> > "Rebeca Abella" wrote:
>>> >
>>> >> Hola a todos de nuevo,
>>> >>
>>> >> Os cuento a ver si alguien me puede echar un cable (si es que es
>>> >> posible), y
>>> >> perdonar si no me explico bien:
>>> >>
>>> >> Tengo las siguientes tablas:
>>> >>
>>> >> TERMINOS MAESTRO_CASAS_TERMINO
>>> >>
>>> >> Id_Termino Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Termino
>>> >>
>>> >>
>>> >> CASA MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_Casa Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Propietario
>>> >>
>>> >>
>>> >> PROPIEATARIOS
>>> >>
>>> >> Id_Propietario
>>> >> Nombre
>>> >>
>>> >>
>>> >> Para el Termino="Madrid" tengo las casas= "Chalet1", "Chalet2" y
>>> >> "Chalet3"
>>> >> A su vez para el "Chalet2" tengo el Propietario="Juan Manuel"
>>> >>
>>> >> Mi pregunta es:
>>> >>
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >>
>>> >> Alguien me puede ayudar?
>>> >> Utilizo VB 6.0, ADODB, contra SQL
>>> >>
>>> >> Como os digo perdonar por si no me he explicado correctamente.
>>> >>
>>> >> Os agradezco cualquier ayuda.
>>> >>
>>> >> Un saludo
>>> >>
>>> >> Rebeca
>>> >>
>>> >>
>>> >>
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#7 Rebeca Abella
06/10/2007 - 17:18 | Informe spam
Muchas gracias Alejandro!!! Como siempre muy amable por tu parte.


Una cosa mas, sabes si este código me vale tal cual para implementarlo en
Visual Basic 6.0 usando ADODB.?

Un saludo muy grande Alejandro

Un saludo,




"Alejandro Mesa" escribió en el
mensaje news:
Hola Rebeca,

De verdad no tuve tiempo para reponder hasta ahora.

En SQL Server no contamos con una forma sencilla de insertar y/o
actualizar
a la misma vez (pero si la tendremos en la version 2008 y el nombre de la
sentencia es MERGE). Asi que te recomiendo lo sgte:

1 - Borrar de la tabla [MAESTRO_CASAS_PROPIETARIO], todas las casas del
termino a cuya casa fue asignada a un propietario.

delete MAESTRO_CASAS_PROPIETARIO
where Id_Casa in (
select
Id_Casa
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'
)

2 - Luego insertar en la misma tabla, todas las casas de ese termino, pero
con el [id] del nuevo propietario. Recuerda usar una transaccion para que
todo este cambio sea atomico, o todo o nada.

declare @Id_Propietario int

set @Id_Propietario = (select Id_Propietario from PROPIEATARIOS where
Nombre
= 'Juan Manuel')

insert into MAESTRO_CASAS_PROPIETARIO(Id_Casa, Id_Propietario)
select
Id_Casa,
@Id_Propietario
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'


AMB

"Rebeca Abella" wrote:

Hola a todos de nuevo,

Por favor, alguien puede echarme un cable con esta consulta?

Muchas gracias de antemano

Saludos

Rebeca

@microsoft.com...
>> Hola Rebeca,
>>
>> En este momento tengo que salir. Quizas mas tarde pueda continuar con
>> la
>> ayuda.
>>
>> - Si una casa de un termino no esta en [MAESTRO_CASAS_PROPIETARIO],
>> entonces
>> se debe insertar en cuanto una casa de ese termino se asigna a un
>> propietario.
>>
>> - Si la casa ya esta en [MAESTRO_CASAS_PROPIETARIO], pero el
>> propietario
>> no
>> es igual al asignado al termino, entonces hay que actualizarla.
>>
>> Esta correcto lo expuesto anteriormente?
>>
>> AMB
>>
>> "Rebeca Abella" wrote:
>>
>>> Hola Alejandro,
>>>
>>> Lo 1º es darte las gracias por tu ayuda.
>>>
>>> Si, si, eso es, me confundi con los campos de la tabla.
>>>
>>> Lo que necesito actualizar son todas las casas, es decir, en cuanto
>>> se
>>> asigna un propietario a esa casa, tengo que actualizar todas las
>>> casas
>>> del
>>> mismo termino con ese Propietario.
>>>
>>> Disculpa si no me he explicado bien.
>>>
>>> Saludos
>>>
>>> Rebeca
>>>
>>> "Alejandro Mesa" escribió
>>> en
>>> el
>>> mensaje news:
>>> > Hola Rebeca,
>>> >
>>> >> MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_maestro_casa_Termino
>>> >> Id_Casa
>>> >> Id_Propietario
>>> >
>>> > Por casualidad sera:
>>> >
>>> > MAESTRO_CASAS_PROPIETARIO
>>> >
>>> > Id_maestro_casa_propietario
>>> > Id_Casa
>>> > Id_Propietario
>>> >
>>> >
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >
>>> > Que es lo que necesitas actualizar?
>>> >
>>> > update
>>> > c
>>> > set
>>> > [?] = [?]
>>> > from
>>> > CASA as c
>>> > inner join
>>> > MAESTRO_CASAS_TERMINO mct
>>> > on c.Id_Casa = mct.Id_Casa
>>> > inner join
>>> > TERMINOS as t
>>> > on t.Id_Termino = mct.Id_Termino
>>> > inner join
>>> > MAESTRO_CASAS_PROPIETARIO mcp
>>> > on mcp.Id_Casa = c.Id_Casa
>>> > inner join
>>> > PROPIEATARIOS as p
>>> > on p.Id_Propietario = mcp.Id_Propietario
>>> > where
>>> > t.Nombre = 'Madrid'
>>> > and p.Nombre = 'Juan Manuel'
>>> >
>>> >
>>> > AMB
>>> >
>>> > "Rebeca Abella" wrote:
>>> >
>>> >> Hola a todos de nuevo,
>>> >>
>>> >> Os cuento a ver si alguien me puede echar un cable (si es que es
>>> >> posible), y
>>> >> perdonar si no me explico bien:
>>> >>
>>> >> Tengo las siguientes tablas:
>>> >>
>>> >> TERMINOS MAESTRO_CASAS_TERMINO
>>> >>
>>> >> Id_Termino Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Termino
>>> >>
>>> >>
>>> >> CASA MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_Casa Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Propietario
>>> >>
>>> >>
>>> >> PROPIEATARIOS
>>> >>
>>> >> Id_Propietario
>>> >> Nombre
>>> >>
>>> >>
>>> >> Para el Termino="Madrid" tengo las casas= "Chalet1", "Chalet2" y
>>> >> "Chalet3"
>>> >> A su vez para el "Chalet2" tengo el Propietario="Juan Manuel"
>>> >>
>>> >> Mi pregunta es:
>>> >>
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >>
>>> >> Alguien me puede ayudar?
>>> >> Utilizo VB 6.0, ADODB, contra SQL
>>> >>
>>> >> Como os digo perdonar por si no me he explicado correctamente.
>>> >>
>>> >> Os agradezco cualquier ayuda.
>>> >>
>>> >> Un saludo
>>> >>
>>> >> Rebeca
>>> >>
>>> >>
>>> >>
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#8 Rebeca Abella
06/10/2007 - 20:33 | Informe spam
Hola de nuevo Alejandro,

Estoy implementando tu solucion y me salta el siguiente error en la consulta
de borrado:

"Ambiguous column name "Id_Casa"

Alguna idea de porque me salta ese error?

Muchas gracias de nuevo

Un saludo

Rebeca

"Alejandro Mesa" escribió en el
mensaje news:
Hola Rebeca,

De verdad no tuve tiempo para reponder hasahora.

En SQL Server no contamos con una forma sencilla de insertar y/o
actualizar
a la misma vez (pero si la tendremos en la version 2008 y el nombre de la
sentencia es MERGE). Asi que te recomiendo lo sgte:

1 - Borrar de la tabla [MAESTRO_CASAS_PROPIETARIO], todas las casas del
termino a cuya casa fue asignada a un propietario.

delete MAESTRO_CASAS_PROPIETARIO
where Id_Casa in (
select
Id_Casa
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'
)

2 - Luego insertar en la misma tabla, todas las casas de ese termino, pero
con el [id] del nuevo propietario. Recuerda usar una transaccion para que
todo este cambio sea atomico, o todo o nada.

declare @Id_Propietario int

set @Id_Propietario = (select Id_Propietario from PROPIEATARIOS where
Nombre
= 'Juan Manuel')

insert into MAESTRO_CASAS_PROPIETARIO(Id_Casa, Id_Propietario)
select
Id_Casa,
@Id_Propietario
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'


AMB

"Rebeca Abella" wrote:

Hola a todos de nuevo,

Por favor, alguien puede echarme un cable con esta consulta?

Muchas gracias de antemano

Saludos

Rebeca

@microsoft.com...
>> Hola Rebeca,
>>
>> En este momento tengo que salir. Quizas mas tarde pueda continuar con
>> la
>> ayuda.
>>
>> - Si una casa de un termino no esta en [MAESTRO_CASAS_PROPIETARIO],
>> entonces
>> se debe insertar en cuanto una casa de ese termino se asigna a un
>> propietario.
>>
>> - Si la casa ya esta en [MAESTRO_CASAS_PROPIETARIO], pero el
>> propietario
>> no
>> es igual al asignado al termino, entonces hay que actualizarla.
>>
>> Esta correcto lo expuesto anteriormente?
>>
>> AMB
>>
>> "Rebeca Abella" wrote:
>>
>>> Hola Alejandro,
>>>
>>> Lo 1º es darte las gracias por tu ayuda.
>>>
>>> Si, si, eso es, me confundi con los campos de la tabla.
>>>
>>> Lo que necesito actualizar son todas las casas, es decir, en cuanto
>>> se
>>> asigna un propietario a esa casa, tengo que actualizar todas las
>>> casas
>>> del
>>> mismo termino con ese Propietario.
>>>
>>> Disculpa si no me he explicado bien.
>>>
>>> Saludos
>>>
>>> Rebeca
>>>
>>> "Alejandro Mesa" escribió
>>> en
>>> el
>>> mensaje news:
>>> > Hola Rebeca,
>>> >
>>> >> MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_maestro_casa_Termino
>>> >> Id_Casa
>>> >> Id_Propietario
>>> >
>>> > Por casualidad sera:
>>> >
>>> > MAESTRO_CASAS_PROPIETARIO
>>> >
>>> > Id_maestro_casa_propietario
>>> > Id_Casa
>>> > Id_Propietario
>>> >
>>> >
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >
>>> > Que es lo que necesitas actualizar?
>>> >
>>> > update
>>> > c
>>> > set
>>> > [?] = [?]
>>> > from
>>> > CASA as c
>>> > inner join
>>> > MAESTRO_CASAS_TERMINO mct
>>> > on c.Id_Casa = mct.Id_Casa
>>> > inner join
>>> > TERMINOS as t
>>> > on t.Id_Termino = mct.Id_Termino
>>> > inner join
>>> > MAESTRO_CASAS_PROPIETARIO mcp
>>> > on mcp.Id_Casa = c.Id_Casa
>>> > inner join
>>> > PROPIEATARIOS as p
>>> > on p.Id_Propietario = mcp.Id_Propietario
>>> > where
>>> > t.Nombre = 'Madrid'
>>> > and p.Nombre = 'Juan Manuel'
>>> >
>>> >
>>> > AMB
>>> >
>>> > "Rebeca Abella" wrote:
>>> >
>>> >> Hola a todos de nuevo,
>>> >>
>>> >> Os cuento a ver si alguien me puede echar un cable (si es que es
>>> >> posible), y
>>> >> perdonar si no me explico bien:
>>> >>
>>> >> Tengo las siguientes tablas:
>>> >>
>>> >> TERMINOS MAESTRO_CASAS_TERMINO
>>> >>
>>> >> Id_Termino Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Termino
>>> >>
>>> >>
>>> >> CASA MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_Casa Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Propietario
>>> >>
>>> >>
>>> >> PROPIEATARIOS
>>> >>
>>> >> Id_Propietario
>>> >> Nombre
>>> >>
>>> >>
>>> >> Para el Termino="Madrid" tengo las casas= "Chalet1", "Chalet2" y
>>> >> "Chalet3"
>>> >> A su vez para el "Chalet2" tengo el Propietario="Juan Manuel"
>>> >>
>>> >> Mi pregunta es:
>>> >>
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >>
>>> >> Alguien me puede ayudar?
>>> >> Utilizo VB 6.0, ADODB, contra SQL
>>> >>
>>> >> Como os digo perdonar por si no me he explicado correctamente.
>>> >>
>>> >> Os agradezco cualquier ayuda.
>>> >>
>>> >> Un saludo
>>> >>
>>> >> Rebeca
>>> >>
>>> >>
>>> >>
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#9 Rebeca Abella
06/10/2007 - 21:45 | Informe spam
Resuelto,

El problema estaba en que faltaba añadir MAESTRO_CASAS_PROPIETARIO antes del
primer Id.Finca

Saludos


"Rebeca Abella" escribió en el mensaje
news:
Hola de nuevo Alejandro,

Estoy implementando tu solucion y me salta el siguiente error en la
consulta de borrado:

"Ambiguous column name "Id_Casa"

Alguna idea de porque me salta ese error?

Muchas gracias de nuevo

Un saludo

Rebeca

"Alejandro Mesa" escribió en el
mensaje news:
Hola Rebeca,

De verdad no tuve tiempo para reponder hasahora.

En SQL Server no contamos con una forma sencilla de insertar y/o
actualizar
a la misma vez (pero si la tendremos en la version 2008 y el nombre de la
sentencia es MERGE). Asi que te recomiendo lo sgte:

1 - Borrar de la tabla [MAESTRO_CASAS_PROPIETARIO], todas las casas del
termino a cuya casa fue asignada a un propietario.

delete MAESTRO_CASAS_PROPIETARIO
where Id_Casa in (
select
Id_Casa
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'
)

2 - Luego insertar en la misma tabla, todas las casas de ese termino,
pero
con el [id] del nuevo propietario. Recuerda usar una transaccion para que
todo este cambio sea atomico, o todo o nada.

declare @Id_Propietario int

set @Id_Propietario = (select Id_Propietario from PROPIEATARIOS where
Nombre
= 'Juan Manuel')

insert into MAESTRO_CASAS_PROPIETARIO(Id_Casa, Id_Propietario)
select
Id_Casa,
@Id_Propietario
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Nombre = 'Madrid'


AMB

"Rebeca Abella" wrote:

Hola a todos de nuevo,

Por favor, alguien puede echarme un cable con esta consulta?

Muchas gracias de antemano

Saludos

Rebeca

@microsoft.com...
>> Hola Rebeca,
>>
>> En este momento tengo que salir. Quizas mas tarde pueda continuar con
>> la
>> ayuda.
>>
>> - Si una casa de un termino no esta en [MAESTRO_CASAS_PROPIETARIO],
>> entonces
>> se debe insertar en cuanto una casa de ese termino se asigna a un
>> propietario.
>>
>> - Si la casa ya esta en [MAESTRO_CASAS_PROPIETARIO], pero el
>> propietario
>> no
>> es igual al asignado al termino, entonces hay que actualizarla.
>>
>> Esta correcto lo expuesto anteriormente?
>>
>> AMB
>>
>> "Rebeca Abella" wrote:
>>
>>> Hola Alejandro,
>>>
>>> Lo 1º es darte las gracias por tu ayuda.
>>>
>>> Si, si, eso es, me confundi con los campos de la tabla.
>>>
>>> Lo que necesito actualizar son todas las casas, es decir, en cuanto
>>> se
>>> asigna un propietario a esa casa, tengo que actualizar todas las
>>> casas
>>> del
>>> mismo termino con ese Propietario.
>>>
>>> Disculpa si no me he explicado bien.
>>>
>>> Saludos
>>>
>>> Rebeca
>>>
>>> "Alejandro Mesa" escribió
>>> en
>>> el
>>> mensaje news:
>>> > Hola Rebeca,
>>> >
>>> >> MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_maestro_casa_Termino
>>> >> Id_Casa
>>> >> Id_Propietario
>>> >
>>> > Por casualidad sera:
>>> >
>>> > MAESTRO_CASAS_PROPIETARIO
>>> >
>>> > Id_maestro_casa_propietario
>>> > Id_Casa
>>> > Id_Propietario
>>> >
>>> >
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >
>>> > Que es lo que necesitas actualizar?
>>> >
>>> > update
>>> > c
>>> > set
>>> > [?] = [?]
>>> > from
>>> > CASA as c
>>> > inner join
>>> > MAESTRO_CASAS_TERMINO mct
>>> > on c.Id_Casa = mct.Id_Casa
>>> > inner join
>>> > TERMINOS as t
>>> > on t.Id_Termino = mct.Id_Termino
>>> > inner join
>>> > MAESTRO_CASAS_PROPIETARIO mcp
>>> > on mcp.Id_Casa = c.Id_Casa
>>> > inner join
>>> > PROPIEATARIOS as p
>>> > on p.Id_Propietario = mcp.Id_Propietario
>>> > where
>>> > t.Nombre = 'Madrid'
>>> > and p.Nombre = 'Juan Manuel'
>>> >
>>> >
>>> > AMB
>>> >
>>> > "Rebeca Abella" wrote:
>>> >
>>> >> Hola a todos de nuevo,
>>> >>
>>> >> Os cuento a ver si alguien me puede echar un cable (si es que es
>>> >> posible), y
>>> >> perdonar si no me explico bien:
>>> >>
>>> >> Tengo las siguientes tablas:
>>> >>
>>> >> TERMINOS MAESTRO_CASAS_TERMINO
>>> >>
>>> >> Id_Termino Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Termino
>>> >>
>>> >>
>>> >> CASA MAESTRO_CASAS_PROPIETARIO
>>> >>
>>> >> Id_Casa Id_maestro_casa_Termino
>>> >> Nombre Id_Casa
>>> >> Id_Propietario
>>> >>
>>> >>
>>> >> PROPIEATARIOS
>>> >>
>>> >> Id_Propietario
>>> >> Nombre
>>> >>
>>> >>
>>> >> Para el Termino="Madrid" tengo las casas= "Chalet1", "Chalet2" y
>>> >> "Chalet3"
>>> >> A su vez para el "Chalet2" tengo el Propietario="Juan Manuel"
>>> >>
>>> >> Mi pregunta es:
>>> >>
>>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>>> >> Propietario="Juan Manuel"
>>> >>
>>> >> Alguien me puede ayudar?
>>> >> Utilizo VB 6.0, ADODB, contra SQL
>>> >>
>>> >> Como os digo perdonar por si no me he explicado correctamente.
>>> >>
>>> >> Os agradezco cualquier ayuda.
>>> >>
>>> >> Un saludo
>>> >>
>>> >> Rebeca
>>> >>
>>> >>
>>> >>
>>>
>>>
>>>
>
>









Respuesta Responder a este mensaje
#10 Alejandro Mesa
07/10/2007 - 01:38 | Informe spam
Hola Rebeca,

Yo te recomendaria poner ese codigo en un procedimiento almacenado y envocar
el sp desde vb. Algo asi como:

create procedure dbo.usp_actualizar_casas_termino_propietario
@Id_Termino int,
@Id_Propietario int
as
set nocount on

begin transaction

delete MAESTRO_CASAS_PROPIETARIO
where Id_Casa in (
select
Id_Casa
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Id_Termino = @Id_Termino
)

if @@error > 0 then goto ErrorHandler

insert into MAESTRO_CASAS_PROPIETARIO(Id_Casa, Id_Propietario)
select
Id_Casa,
@Id_Propietario
from
CASA as c
inner join
MAESTRO_CASAS_TERMINO mct
on c.Id_Casa = mct.Id_Casa
inner join
TERMINOS as t
on t.Id_Termino = mct.Id_Termino
where
t.Id_Termino = @Id_Termino

if @@error > 0 then goto ErrorHandler

commit transaction

return 0

:ErrorHandler
if @@trancount > 0 rollback transaction
raiserror('Error actualizand0 casas.', 16, 1)
return -1
go

declare @Id_Termino int,
declare @Id_Propietario int

set @Id_Propietario = (
select Id_Propietario
from PROPIEATARIOS
where Nombre = 'Juan Manuel'
)

set @Id_Termino = (
select Id_Termino
from TERMINOS
where Nombre = 'Madrid'
)

exec dbo.usp_actualizar_casas_termino_propietario @Id_Termino, @Id_Propietario
go

How To Invoke a Stored Procedure with ADO Query Using VBA/C++/Java
http://support.microsoft.com/kb/q185125/

How To Call a Parameterized SQL Server Stored Procedure from ADO
http://support.microsoft.com/kb/195047

ADO Stored Procedures
http://authors.aspalliance.com/stev...sprocs.asp


AMB

"Rebeca Abella" wrote:

Muchas gracias Alejandro!!! Como siempre muy amable por tu parte.


Una cosa mas, sabes si este código me vale tal cual para implementarlo en
Visual Basic 6.0 usando ADODB.?

Un saludo muy grande Alejandro

>Un saludo,


"Alejandro Mesa" escribió en el
mensaje news:
> Hola Rebeca,
>
> De verdad no tuve tiempo para reponder hasta ahora.
>
> En SQL Server no contamos con una forma sencilla de insertar y/o
> actualizar
> a la misma vez (pero si la tendremos en la version 2008 y el nombre de la
> sentencia es MERGE). Asi que te recomiendo lo sgte:
>
> 1 - Borrar de la tabla [MAESTRO_CASAS_PROPIETARIO], todas las casas del
> termino a cuya casa fue asignada a un propietario.
>
> delete MAESTRO_CASAS_PROPIETARIO
> where Id_Casa in (
> select
> Id_Casa
> from
> CASA as c
> inner join
> MAESTRO_CASAS_TERMINO mct
> on c.Id_Casa = mct.Id_Casa
> inner join
> TERMINOS as t
> on t.Id_Termino = mct.Id_Termino
> where
> t.Nombre = 'Madrid'
> )
>
> 2 - Luego insertar en la misma tabla, todas las casas de ese termino, pero
> con el [id] del nuevo propietario. Recuerda usar una transaccion para que
> todo este cambio sea atomico, o todo o nada.
>
> declare @Id_Propietario int
>
> set @Id_Propietario = (select Id_Propietario from PROPIEATARIOS where
> Nombre
> = 'Juan Manuel')
>
> insert into MAESTRO_CASAS_PROPIETARIO(Id_Casa, Id_Propietario)
> select
> Id_Casa,
> @Id_Propietario
> from
> CASA as c
> inner join
> MAESTRO_CASAS_TERMINO mct
> on c.Id_Casa = mct.Id_Casa
> inner join
> TERMINOS as t
> on t.Id_Termino = mct.Id_Termino
> where
> t.Nombre = 'Madrid'
>
>
> AMB
>
> "Rebeca Abella" wrote:
>
>> Hola a todos de nuevo,
>>
>> Por favor, alguien puede echarme un cable con esta consulta?
>>
>> Muchas gracias de antemano
>>
>> Saludos
>>
>> Rebeca
>>
>> @microsoft.com...
>> >> Hola Rebeca,
>> >>
>> >> En este momento tengo que salir. Quizas mas tarde pueda continuar con
>> >> la
>> >> ayuda.
>> >>
>> >> - Si una casa de un termino no esta en [MAESTRO_CASAS_PROPIETARIO],
>> >> entonces
>> >> se debe insertar en cuanto una casa de ese termino se asigna a un
>> >> propietario.
>> >>
>> >> - Si la casa ya esta en [MAESTRO_CASAS_PROPIETARIO], pero el
>> >> propietario
>> >> no
>> >> es igual al asignado al termino, entonces hay que actualizarla.
>> >>
>> >> Esta correcto lo expuesto anteriormente?
>> >>
>> >> AMB
>> >>
>> >> "Rebeca Abella" wrote:
>> >>
>> >>> Hola Alejandro,
>> >>>
>> >>> Lo 1º es darte las gracias por tu ayuda.
>> >>>
>> >>> Si, si, eso es, me confundi con los campos de la tabla.
>> >>>
>> >>> Lo que necesito actualizar son todas las casas, es decir, en cuanto
>> >>> se
>> >>> asigna un propietario a esa casa, tengo que actualizar todas las
>> >>> casas
>> >>> del
>> >>> mismo termino con ese Propietario.
>> >>>
>> >>> Disculpa si no me he explicado bien.
>> >>>
>> >>> Saludos
>> >>>
>> >>> Rebeca
>> >>>
>> >>> "Alejandro Mesa" escribió
>> >>> en
>> >>> el
>> >>> mensaje news:
>> >>> > Hola Rebeca,
>> >>> >
>> >>> >> MAESTRO_CASAS_PROPIETARIO
>> >>> >>
>> >>> >> Id_maestro_casa_Termino
>> >>> >> Id_Casa
>> >>> >> Id_Propietario
>> >>> >
>> >>> > Por casualidad sera:
>> >>> >
>> >>> > MAESTRO_CASAS_PROPIETARIO
>> >>> >
>> >>> > Id_maestro_casa_propietario
>> >>> > Id_Casa
>> >>> > Id_Propietario
>> >>> >
>> >>> >
>> >>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>> >>> >> Propietario="Juan Manuel"
>> >>> >
>> >>> > Que es lo que necesitas actualizar?
>> >>> >
>> >>> > update
>> >>> > c
>> >>> > set
>> >>> > [?] = [?]
>> >>> > from
>> >>> > CASA as c
>> >>> > inner join
>> >>> > MAESTRO_CASAS_TERMINO mct
>> >>> > on c.Id_Casa = mct.Id_Casa
>> >>> > inner join
>> >>> > TERMINOS as t
>> >>> > on t.Id_Termino = mct.Id_Termino
>> >>> > inner join
>> >>> > MAESTRO_CASAS_PROPIETARIO mcp
>> >>> > on mcp.Id_Casa = c.Id_Casa
>> >>> > inner join
>> >>> > PROPIEATARIOS as p
>> >>> > on p.Id_Propietario = mcp.Id_Propietario
>> >>> > where
>> >>> > t.Nombre = 'Madrid'
>> >>> > and p.Nombre = 'Juan Manuel'
>> >>> >
>> >>> >
>> >>> > AMB
>> >>> >
>> >>> > "Rebeca Abella" wrote:
>> >>> >
>> >>> >> Hola a todos de nuevo,
>> >>> >>
>> >>> >> Os cuento a ver si alguien me puede echar un cable (si es que es
>> >>> >> posible), y
>> >>> >> perdonar si no me explico bien:
>> >>> >>
>> >>> >> Tengo las siguientes tablas:
>> >>> >>
>> >>> >> TERMINOS MAESTRO_CASAS_TERMINO
>> >>> >>
>> >>> >> Id_Termino Id_maestro_casa_Termino
>> >>> >> Nombre Id_Casa
>> >>> >> Id_Termino
>> >>> >>
>> >>> >>
>> >>> >> CASA MAESTRO_CASAS_PROPIETARIO
>> >>> >>
>> >>> >> Id_Casa Id_maestro_casa_Termino
>> >>> >> Nombre Id_Casa
>> >>> >> Id_Propietario
>> >>> >>
>> >>> >>
>> >>> >> PROPIEATARIOS
>> >>> >>
>> >>> >> Id_Propietario
>> >>> >> Nombre
>> >>> >>
>> >>> >>
>> >>> >> Para el Termino="Madrid" tengo las casas= "Chalet1", "Chalet2" y
>> >>> >> "Chalet3"
>> >>> >> A su vez para el "Chalet2" tengo el Propietario="Juan Manuel"
>> >>> >>
>> >>> >> Mi pregunta es:
>> >>> >>
>> >>> >> Necesito actualizar todas las casas del Termino="Madrid" el
>> >>> >> Propietario="Juan Manuel"
>> >>> >>
>> >>> >> Alguien me puede ayudar?
>> >>> >> Utilizo VB 6.0, ADODB, contra SQL
>> >>> >>
>> >>> >> Como os digo perdonar por si no me he explicado correctamente.
>> >>> >>
>> >>> >> Os agradezco cualquier ayuda.
>> >>> >>
>> >>> >> Un saludo
>> >>> >>
>> >>> >> Rebeca
>> >>> >>
>> >>> >>
>> >>> >>
>> >>>
>> >>>
>> >>>
>> >
>> >
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida