Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    operare con relazione uno a molti

    ho due tabelle e tra loro ho una relazione uno a molti...

    quando ho l'occorrenza di aggiornare vecchi dati già inseriti nella seconda delle due tabelle (quella dove ho molte corrispondenze rispetto ad ogni record della prima tabella) come è giusto che operi?

    prima cancello tutti i vecchi e poi inserisco i nuovi?
    oppure i che altro modo? voi come fate?
    This is a time in my life where everything is falling apart and at the same time it's all coming together
    That's Me

  2. #2
    La tabella dove i record sono singoli non si devono toccare i record che hanno una relazione nella tabella "molti", pena di rendere inconsistente la tabella "molti". Cioe' puoi modificare il contenuto ma non cambiare il riferimento.

    Nella tabella "molti" puoi agire come credi.... i record hanno un vincolo per poter esistere, ma non per permettere di esistere alla tabella "uno". Quindi possono sparire quando vogliono. E puoi aggiungerne quanti e quando vuoi.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    scusa ma effettivamente non mi sono spiegato bene...
    il mio dubbio sorge quando devo fare un UPDATE nella seconda tabella...

    vado per gradi.

    nella seconda tabella ho molti record associati per un solo record della prima.
    per inserire nuovi valori faccio
    INSERT INTO tabella2 VALUES (idtabella1, valore), (idtabella1, valore)

    fin qui tutto ok...

    adesso ho la necessità di modificare questi dati...
    anche conoscendo idtabella1 non posso eseguire un query di UPDATE
    la soluzione più semplice che mi viene naturale fare
    è cancellare tutti i dati i vecchi dati con idtabella1 e riscrivere i nuovi..

    ma è giusto procedere così?
    This is a time in my life where everything is falling apart and at the same time it's all coming together
    That's Me

  4. #4
    La stessa query (selezione) che usi per il SELECT va bene anche per l'UPDATE

    facciamo un esempio perche' non sono sicuro di aver capito:
    codice:
    SELECT *
    FROM tab1 a
    left join tab2 b
    ON b.id_pippo = a.id_pippo
    where a.id_pippo = '12'
    l'update potrebbe seguire la stessa logica...
    codice:
    UPDATE tab1 a, tab2 b
    set b.descrizione = 'Ma che bella giornata'
    where b.id_pippo = a.id_pippo
    AND a.id_pippo = '12'
    e l'update puo' reggere anche ORDER BY e LIMIT


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    non credo ci siamo capiti... non è semplice spiegare scrivendo... gosh!

    fai conto che in una prima tabella salvo dei nomi di categorie...

    creo la categoria animali.

    nella seconda tabella salvo l'idcategoria e i nomi di immagini
    associate ad essa

    quindi associo alla categoria animali una decina di fotografie....

    adesso dalla mia applicazione ho la necessità
    di modificare tutte le fotografie associate alla cat. animali. ma un update non è possibile farlo giuso?

    per non fare tanti controlli io elimino tutte le vecchie foto e salvo le nuove.

    ma è giusto procedere così?
    This is a time in my life where everything is falling apart and at the same time it's all coming together
    That's Me

  6. #6
    adesso dalla mia applicazione ho la necessità
    di modificare tutte le fotografie associate alla cat. animali. ma un update non è possibile farlo giuso?
    che cosa vuoi dire nelle quote? che c'e' un campo con un nome di file, una descrizione ecc...? L'esempio che ti ho portato di update calza a pennello. ovvio che lo devi dedicare alla tua tabella.

    In pratica qualunque cosa tu voglia modificare con UPDATE devi considerare che: se cambi un dato collettivo (di un gruppo) devi identificare il gruppo, se cambi un dato esclusivo di un record devi identificare un record.

    Se e' giusto oppure no cancellare e riscrivere tutto lo puoi sapere solo tu... non hai mica detto "cosa" dovresti modificare. Modificare tutte le fotografie va dal correggere con un programma grafico il file, a cambiare il nome del file, a cambiare il titolo oppure la descrizione..... o l'associazione all'altra tabella...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    scusa volevo dire questo...

    nella seconda tabella ci sono per esempio 2 campi
    idcategoria e img, dove img è il nomefile di una immagine...

    da un pagina web vedo tutte le immagini presenti in una cartella del disco e tramite delle checkbox (una per ogni foto) assegno e/o rimuovo le immagini alla cat. animali

    diciamo che ho 10 immagini già assegnate alla categoria animali.

    dal pannello di controllo selezione nuove foto da associare alla categoria animali e rimuovo un paio dalla medesima categoria....

    quando registro le selezioni/deselezioni effettuate, come dev'essere la mia query??
    This is a time in my life where everything is falling apart and at the same time it's all coming together
    That's Me

  8. #8
    se hai puntato ad un id_foto da sostituire non si tratta altro che di cambiare il nome del file nella seconda tabella.... ovviamente se lo vuoi cancellare avrai una indicazione del record... o l'id oppure fileName. In questo caso basta fare un normalissimo update, poiche' come detto prima, salvo rimanendo identico l'id di riferimento, gli altri campi li puoi cambiare come ti pare.
    codice:
    UPDATE tabella_foto
    set fileName = '$new_fileName'
    where fileName = '$old_fileName'
    
    oppure se hai l'id
     
    where id_foto = '$id_foto'
    senza fare delete e insert.... o replace.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    d'accordo...
    il tuo caso va bene per una sostituzione...

    ma tieni presente che ho N foto da associare... o disassociare
    This is a time in my life where everything is falling apart and at the same time it's all coming together
    That's Me

  10. #10
    [supersaibal]Originariamente inviato da suicide_machine
    d'accordo...
    il tuo caso va bene per una sostituzione...

    ma tieni presente che ho N foto da associare... o disassociare [/supersaibal]
    Se vuoi cambiare un valore per ogni record, dovrai fare tante query quanti sono i record da cambiare...

    n foto saranno n query...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.