PDA

Visualizza la versione completa : SQL: UPDATE Join su due tabelle


Elena78
14-07-2003, 10:06
Ho due tabelle : AGENTI, CAMPAGNA

devo valorizzare il campo team della tabella CAMPAGNA in base al contenuto del campo agente sempre nella tabella campagna.
Per fare questo devo recuperare dalla tabella AGENTI, il campo team di riferimento per quell'agente (contenuto del campo agente)


Praticamente ho questi dati:


AGENTI CAMPAGNA
campo_agente campo_team1
campo_team campo_agente1
identificativo

Eseguire un UPDATE sulla tabella CAMPAGNA andando a recuperare, in base al campo_agente1 il campo team della tabella AGENTI relativo al contenuto del campo_agente1 uguale al campo_agente..

Avevo fatto una cosa del genere ma la select interna mi ritorna un valore nullo..


update CAMPAGNA
set campo_team1=(select AGENTI.campo_team
from AGENTI, CAMPAGNA
where CAMPAGNA.campo_agente1= AGENTI.campo_agente) where campo_team1 is null

E' chiaro che non può funzionare perchè devo associargli il campo identificativo..

Come fare?? :master:

ladyBlu
14-07-2003, 10:11
Ciao Ele ;)

Io credo che ti convenga fare prima una SELECT su AGENTI per recuperare il campo IDENTIFICATIVO che ti serve e poi un UPDATE su CAMPAGNA in cui inserisci il campo IDENTIFICATIVO recuperato
Mi sembra la strada più semplice e veloce. Sempre che abbia capito bene il tuo problema ;)

floyd
14-07-2003, 10:16
update CAMPAGNA c
set campo_team1 = (select ag.campo_team
from ag AGENTI, ca CAMPAGNA
where ca.campo_agente1 = ag.campo_agente
and ca.campo_agente1 = c.campo_agente1)
where campo_team1 is null
se ho capito bene questo dovrebbe funzionare
:gren: :gren: :gren: :gren:

darkblOOd
14-07-2003, 10:22
update campagna
set campagna.CampoDaAggiornare = Agenti.CampoInAgenti
from Agenti join Campagna on Agenti.CampoIndice=Campagna.CampoIndice


;)

se poi ti interessa aggiornare soltanto gli agenti non null allora usa 'left join' (o 'right join' :stordita: )

cmq fammi sapere che eventualmente trovo la chiave giusta

Elena78
14-07-2003, 10:39
Originariamente inviato da ladyBlu
Ciao Ele ;)

Io credo che ti convenga fare prima una SELECT su AGENTI per recuperare il campo IDENTIFICATIVO che ti serve e poi un UPDATE su CAMPAGNA in cui inserisci il campo IDENTIFICATIVO recuperato
Mi sembra la strada più semplice e veloce. Sempre che abbia capito bene il tuo problema ;)

Ciao Lady ;)
Una cosa di questo tipo intendi???



SELECT campo_team FROM AGENTI, CAMPAGNA WHERE CAMPAGNA.campo_agente1 = campo_agente
mi ritorna valore nullo :(

@ Floyd: si posiziona sulla riga dell'update e dice : table or view do not exist

darkblOOd
14-07-2003, 10:42
Originariamente inviato da Elena78
Ciao Lady ;)
Una cosa di questo tipo intendi???



SELECT campo_team FROM AGENTI, CAMPAGNA WHERE CAMPAGNA.campo_agente1 = campo_agente
mi ritorna valore nullo :(

@ Floyd: si posiziona sulla riga dell'update e dice : table or view do not exist

ma la mia l'hai provata? :stordita:



update campagna
set campagna.campo_team1 = Agenti.campo_team
from Agenti join Campagna on Agenti.campo_agente=Campagna.campo_agente1

Elena78
14-07-2003, 10:46
Originariamente inviato da darkblOOd


update campagna
set campagna.CampoDaAggiornare = Agenti.CampoInAgenti
from Agenti join Campagna on Agenti.CampoIndice=Campagna.CampoIndice


;)

se poi ti interessa aggiornare soltanto gli agenti non null allora usa 'left join' (o 'right join' :stordita: )

cmq fammi sapere che eventualmente trovo la chiave giusta


Si posiziona sul set e mi dice : comand not properly ended.
Ma poi la parola chiave Join non la riconosce come valida :master:

Elena78
14-07-2003, 10:50
La tua Gio' è piu o meno come l'avevo provata io:


update RECALL47_TEMP_3TRANCHE
set COD38 = (select OPERATORI_OUTBOUND.TEAM
from OPERATORI_OUTBOUND,RECALL47_TEMP_3TRANCHE where OPERATORI_OUTBOUND.LOGIN=RECALL47_TEMP_3TRANCHE.AG ENT_ID) where cod38


solo che ho tolto la parola join e on che non riconsce e dopo il set = ho messo la parentesi con la select altrimenti generare errore...

darkblOOd
14-07-2003, 10:51
Originariamente inviato da Elena78
Si posiziona sul set e mi dice : comand not properly ended.
Ma poi la parola chiave Join non la riconosce come valida :master:

ehm...

che cosa stai usando per lanciare la query? Mi sembra che già una volta ci abbiamo sbattuto ed abbiamo dovuto modificare lo script senza le join... :fagiano:


prova così:


update campagna
set campagna.CampoDaAggiornare = Agenti.CampoInAgenti
from Agenti
Where Agenti.campo_agenti = campagna.campo_agenti1




update RECALL47_TEMP_3TRANCHE
set RECALL47_TEMP_3TRANCHE.COD38 = OPERATORI_OUTBOUND.TEAM
from OPERATORI_OUTBOUND
where OPERATORI_OUTBOUND.LOGIN=RECALL47_TEMP_3TRANCHE.AG ENT_ID

Elena78
14-07-2003, 11:03
Originariamente inviato da darkblOOd
ehm...

che cosa stai usando per lanciare la query? Mi sembra che già una volta ci abbiamo sbattuto ed abbiamo dovuto modificare lo script senza le join... :fagiano:


prova così:


update campagna
set campagna.CampoDaAggiornare = Agenti.CampoInAgenti
from Agenti
Where Agenti.campo_agenti = campagna.campo_agenti1




update RECALL47_TEMP_3TRANCHE
set RECALL47_TEMP_3TRANCHE.COD38 = OPERATORI_OUTBOUND.TEAM
from OPERATORI_OUTBOUND
where OPERATORI_OUTBOUND.LOGIN=RECALL47_TEMP_3TRANCHE.AG ENT_ID



sto usando toad, come al solito..
così mi da ancora comand non properly ended... perchè dopo il set = vuole una select non un'altra tabella così..

Loading