Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535

    SQL: UPDATE Join su due tabelle

    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:

  2. #2
    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

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    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:

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    codice:
    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' )

    cmq fammi sapere che eventualmente trovo la chiave giusta

  5. #5
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    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

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    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?

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

  7. #7
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    codice:
    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' )

    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:

  8. #8
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    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...

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    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...


    prova così:
    codice:
    update campagna
    set campagna.CampoDaAggiornare = Agenti.CampoInAgenti
    from Agenti 
    Where Agenti.campo_agenti = campagna.campo_agenti1
    codice:
    update RECALL47_TEMP_3TRANCHE 
    set RECALL47_TEMP_3TRANCHE.COD38 = OPERATORI_OUTBOUND.TEAM 
    from OPERATORI_OUTBOUND
    where OPERATORI_OUTBOUND.LOGIN=RECALL47_TEMP_3TRANCHE.AGENT_ID

  10. #10
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    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...


    prova così:
    codice:
    update campagna
    set campagna.CampoDaAggiornare = Agenti.CampoInAgenti
    from Agenti 
    Where Agenti.campo_agenti = campagna.campo_agenti1
    codice:
    update RECALL47_TEMP_3TRANCHE 
    set RECALL47_TEMP_3TRANCHE.COD38 = OPERATORI_OUTBOUND.TEAM 
    from OPERATORI_OUTBOUND
    where OPERATORI_OUTBOUND.LOGIN=RECALL47_TEMP_3TRANCHE.AGENT_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ì..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.