Query di aggiornamento

di il
20 risposte

Query di aggiornamento

Buongiorno,

avrei bisogno di risolvere il seguente problema:


ho una tabella con un campo numerico chiamato "stanza" e altri campi "marca", "modello", "ufficio", "in uso ad utente" ecc.

nel caso avessi bisogno di spostare tutto il materiale dalla "stanza" numero 1 alla stanza numero 2 e viceversa, tramite query come posso fare ?

ho fatto una query di aggiornamento, ma ovviamente se sposto da stanza 1 a 2 i dati nei campi "marca" "modello" ecc. si mischiano, mentre io vorrei

spostarli contemporaneamente dalla stanza 2 alla 1.

Grazie

20 Risposte

  • Re: Query di aggiornamento

    Se devi spostare TUTTO il contenuto della STANZA=1 in STANZA=2 basta fare una cosa simile
    
    UPDATE TabellaMateriale SET Stanza=2 WHERE Stanza=1
    Chiarisci cosa intendi con "si mischia" perchè non è possibile... se tutto è fatto a dovere, ma su questo non si può che sperare dal momento che non dai informazioni.
  • Re: Query di aggiornamento

    Non è possibilelo swap diretto, ma puoi aggirare l'ostacolo con 3 query
    1) UPDATE TabellaMateriale SET Stanza=-1 WHERE Stanza=2
    2) UPDATE TabellaMateriale SET Stanza=2 WHERE Stanza=1
    3) UPDATE TabellaMateriale SET Stanza=1 WHERE Stanza=-1
  • Re: Query di aggiornamento

    Cercate di utilizzare la terminologia CORRETTA:

    query == interrogazione == SELECT

    UPDATE == aggiornameto

    INSERT == inserimento

    SELECT/INSERT/UPDATE/DELETE == statement SQL

    !!!

    Quindi, sono 3 UPDATE o 3 aggiornamenti!
  • Re: Query di aggiornamento

    mariosan ha scritto:


    ho una tabella con un campo numerico chiamato "stanza" e altri campi "marca", "modello", "ufficio", "in uso ad utente" ecc.
    A me questa tabella (di cui non conosciamo il nome proprio) non convince la "normalizzazione".

    mariosan ha scritto:


    nel caso avessi bisogno di spostare tutto il materiale dalla "stanza" numero 1 alla stanza numero 2 e viceversa, tramite query come posso fare ?
    I suggerimenti UPDATE sono sempre validi...ma un volgare Trova 1 e Sostituisci 2 sul campo [Stanza] cosa comporterebbe?
  • Re: Query di aggiornamento



    questa è la tabella, se trovo 1 e sostituisco 2 nel campo stanza tutti gli oggetti nei campi "marca" "modello" ecc risulteranno nella stanza 2 .
    mentre io vorrei spostare ciò che c'è nella stanza 1 nella 2, e quello che c'è nella stanza 2 nella 1.
  • Re: Query di aggiornamento

    Link dell'immagine della tabella

    http://imagizer.imageshack.us/v2/320x240q90/924/MmgORU.jpg
  • Re: Query di aggiornamento

    A me non piace quella Tbl_Generale: continuo a pensare che non sia normalizzata. Tuttavia il quesito è un altro. Prova queste(spartane) soluzioni:

    A)
    1. Crea una stanza3
    2. Sposti tutto da stanza1 a stanza3
    3. Sposti tutto da stanza2 a stanza1
    4. Sposti tutto da stanza3 a stanza2
    5. Elimini stanza3

    B)
    1. Aggiungi un campo X di tipo Sì/No
    2. Metti la spunta Sì a tutti gli stanza2
    3. Sposta tutti gli stanza1 in stanza2
    4. Filtra tutti gli stanza2 con spunta Sì e poi spostali tutti in stanza1
    5. Elimina il campo X

    Quando dico "sposta" intendo sempre il Trova/Sostituisci.
  • Re: Query di aggiornamento

    mariosan ha scritto:


    ...mentre io vorrei spostare ciò che c'è nella stanza 1 nella 2, e quello che c'è nella stanza 2 nella 1.

    biagio ha scritto:


    Non è possibilelo swap diretto, ma puoi aggirare l'ostacolo con 3 query
    1) UPDATE TabellaMateriale SET Stanza=-1 WHERE Stanza=2
    2) UPDATE TabellaMateriale SET Stanza=2 WHERE Stanza=1
    3) UPDATE TabellaMateriale SET Stanza=1 WHERE Stanza=-1
    Biago ti ha fornito l'indicazione ... non puoi fare lo 'swap' direttamente ma devi passare da un valore intermedio.
    Tutto sta nel trovare un valore intermedio NON utilizzato (e non utilizzabile) nel tuo DB (Biagio propone -1).
    Aggiungo che sarebbe meglio effettuare i 3 aggiornamenti all'interno di una transazione ......
  • Re: Query di aggiornamento

    Biagio De Franco ha scritto:


    Non è possibilelo swap diretto, ma puoi aggirare l'ostacolo con 3 query
    1) UPDATE TabellaMateriale SET Stanza=-1 WHERE Stanza=2
    2) UPDATE TabellaMateriale SET Stanza=2 WHERE Stanza=1
    3) UPDATE TabellaMateriale SET Stanza=1 WHERE Stanza=-1
    Io non sono certo che sia vera la cosa... con JET... almeno dalla prova fatta sia il campo sia una CHIAVE sia con Relazione che senza accetta lo SWAP diretto.
    Test fatto ovviamente su tabella con 2 Records ma tant'è...

    Non so...
  • Re: Query di aggiornamento

    @Alex ha scritto:


    Biagio De Franco ha scritto:


    Non è possibilelo swap diretto, ma puoi aggirare l'ostacolo con 3 query
    1) UPDATE TabellaMateriale SET Stanza=-1 WHERE Stanza=2
    2) UPDATE TabellaMateriale SET Stanza=2 WHERE Stanza=1
    3) UPDATE TabellaMateriale SET Stanza=1 WHERE Stanza=-1
    Io non sono certo che sia vera la cosa... con JET... almeno dalla prova fatta sia il campo sia una CHIAVE sia con Relazione che senza accetta lo SWAP diretto.
    Test fatto ovviamente su tabella con 2 Records ma tant'è...

    Non so...
    Non ho provato in quanto mi sembra ragionevole che lo swap diretto NON sia possibile (almeno io non riesco ad immaginare come possa farlo) ....
    Se tu hai provato e ti risulta diversamente non posso fare altro che prenderne atto.

    Non capisco come possa essere possibile che (supponendo che io abbia 3 records con stanza=1 e 5 records con stanza=2) :
    - sposto 3 records da stanza 1 a stanza2 -> quindi ho 8 records con stanza=2 e 0 record con stanza 1
    - sposto, secondo me - senza aver fatto lo swap, 8 records da stanza2 a stanza 1 ....

    Poi magari NON ho capito alcunché della richiesta ......
  • Re: Query di aggiornamento

    Forse sono io ad aver frainteso...
    Fatte 2 Tabelle:
    
    T1
    Id(PK AutoNumber)
    Stanza(FK Indice Numerico Lungo)
    
    T2
    Stanza(PK Numerico Lungo)
    
    Contenuto della T1
    
    Id    Stanza
    1     2
    2     2
    3     1
    Contenuto della T2
    
    Stanza
    1     
    2
    Relaziono le 2 Tabelle T1(00)<---->(1)T2 con il campo Stanza.

    Applicato da QBE
    
    UPDATE T1 SET Stanza=1 WHERE Stanza=2
    Eseguo ed ottengo contenuto della T1
    
    Id    Stanza
    1     1
    2     1
    3     1
    Ho frainteso sicuramente qualche cosa...
  • Re: Query di aggiornamento

    @Alex ha scritto:


    ...Fatte 2 Tabelle ...
    Forse questo è il fraintendimento, @mariosan parla di una tabella :
    ... ho una tabella con un campo numerico chiamato "stanza" e altri campi "marca", "modello", "ufficio", "in uso ad utente" ecc.
    Penso comunque che sia meglio aspettare chiarimenti dall'OP.
  • Re: Query di aggiornamento

    Prova fatta anche su MONOTABELLA.
  • Re: Query di aggiornamento

    @Alex ha scritto:


    Prova fatta anche su MONOTABELLA.
    E quindi, dopo aver fatto 2 update
    
    UPDATE T1 SET Stanza=1 WHERE Stanza=2
    UPDATE T1 SET Stanza=2 WHERE Stanza=1
    
    ti ritrovi questo risultato ?:
    
    Id    Stanza
    1     1
    2     1
    3     2
    
    Dimmi di no .... perché non riesco a crederci.
    Se però confermi mi toccherà mangiare qualche chilo di carta (di qualche libro)
Devi accedere o registrarti per scrivere nel forum
20 risposte