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

    [mysql]funzionamento di UPDATE

    ciao,

    ho nel DB una tabella "item" in cui ho come campi gli id di altre 3 tabelle: "categorie", "prodotti", "marchi".

    quindi questa tabella "item" contiene l'd_categoria, id_prodotto, id_marchio.

    quando faccio l'inserimento di prodotti legati al marchio e alla categoria, eseguo una query di INSERT e qua tutto bene.

    ma se devo fare una modifica, ad esempio voglio togliere o aggiungere prodotti legati al marchio, è corretto fare prima una query di DELETE e quindi fare poi un INSERT?
    perchè se eseguo direttamente una query di UPDATE in fase di aggiornamento, nel caso in cui il numero di prodotti da aggiornare è inferiore o superiore a quelli che già sono inseriti, non funziona giusto?

    scusate la domanda forse stupida

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per dire se è stupida bisognerebbe prima capirla...

  3. #3
    Quando fai l'UPDATE devi mettere una clausola WHERE che ti vada ad aggiornare solo la riga contenente i dati da aggiornare. Di solito si usa un WHERE id='$id', dove $id è una variabile che passi al tuo sql tramite post o get.

  4. #4
    vediamo se riesco a spiegarmi... :master:

    una query di UPDATE serve per modificare i dati che esistono all'interno dei campi delle tabelle
    quindi se io ho un tot di prodotti (id_prodotto) per marchio (id_marchio) e volessi modificare il numero di prodotti, che so, da 4 a 8 devo per forza fare una query prima di DELETE e poi INSERT...

    cioè sto provando e vedo che funziona, ma non so se è l'unica soluzione

    spero di essermi spiegato..altrimenti non importa grazie lo stesso

  5. #5
    Originariamente inviato da ecmedia
    Quando fai l'UPDATE devi mettere una clausola WHERE che ti vada ad aggiornare solo la riga contenente i dati da aggiornare. Di solito si usa un WHERE id='$id', dove $id è una variabile che passi al tuo sql tramite post o get.
    si ma non è quello il problema

  6. #6
    Originariamente inviato da blur
    vediamo se riesco a spiegarmi... :master:

    una query di UPDATE serve per modificare i dati che esistono all'interno dei campi delle tabelle
    quindi se io ho un tot di prodotti (id_prodotto) per marchio (id_marchio) e volessi modificare il numero di prodotti, che so, da 4 a 8 devo per forza fare una query prima di DELETE e poi INSERT...

    cioè sto provando e vedo che funziona, ma non so se è l'unica soluzione

    spero di essermi spiegato..altrimenti non importa grazie lo stesso
    ma il numero dei prodotti associati ad un marchio, oppure il numero dei prodotti associati alla categoria sono campi calcolati che non hanno nessuna ragione di stare sulle tabelle.

    Si calcolano al momento dell'uso con una query, altrimenti rischieresti di fare il tiramolla sui numeri per nulla.

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

  7. #7
    Originariamente inviato da piero.mac
    ma il numero dei prodotti associati ad un marchio, oppure il numero dei prodotti associati alla categoria sono campi calcolati che non hanno nessuna ragione di stare sulle tabelle.

    Si calcolano al momento dell'uso con una query, altrimenti rischieresti di fare il tiramolla sui numeri per nulla.

    eh si ciao.... scusa piero, ma potresti spiegarmi meglio...

    io ho tutte le tabelle categorie/marchi/prodotti/ e in più una tabella che uso proprio per gestire il numero di categorie/Prodotti per marchio in cui ho l'id_categoria, id_prodotto, id_marchio

    :master: :master:

  8. #8
    Originariamente inviato da blur
    eh si ciao.... scusa piero, ma potresti spiegarmi meglio...

    io ho tutte le tabelle categorie/marchi/prodotti/ e in più una tabella che uso proprio per gestire il numero di categorie/Prodotti per marchio in cui ho l'id_categoria, id_prodotto, id_marchio

    :master: :master:
    ma a che ti serve sapere "quanti" se non sai "quali" ...

    Le tabelle "calcolate" sulla numerosita' dei record sono assolutamente inutili e deprecate. Invece di fare la query per leggere la tabella item fai una query che conti i record.

    La tabella "item" dovrebbe servire ad "unire" in modo relazionale i record delle tre tabelle e non a contare i record.

    Un database non e' un foglio elettronico, i dati devo essere atomici e non variabili.

    E per questa confusione sull'uso che fai della tabella "item" che non si capiva la tua domanda iniziale.

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

  9. #9
    vabbè..la cosa mi risulta ancora un pò oscura, ma cercherò di studiare la cosa con calma....
    per il momento però mi vedo costretto a lasciare la cosa così com'è...funziona anche se come dici tu piero è un sistema deprecato e inutile...



    grazie mille comunque!

    ps: non è che hai un link a parte mysql, che mi possa essere utile per capire meglio il tutto, magari una cosa semplice.

  10. #10
    vediamo di fare un po' di chiarezza perchè io non ho ancora capito cosa ti serve...


    supponiamo che tu abbia la tabella prodotti

    ID | PRODOTTO
    1 | banana
    2 | mela
    3 | melanzana
    4 | carota

    la tabella categorie

    ID | CATEGORIA
    1 | frutta
    2 | verdura

    e la tabella marchio

    ID | MARCHIO
    1 | ABC
    2 | DEF

    poi avrai la tabella PRODOTTO_CATEGORIA

    ID | IDPRODOTTO | IDCATEGORIA
    1 | 1 | 1
    2 | 2 | 1
    3 | 3 | 2
    4 | 4 | 2

    e la tabella PRODOTTO_MARCHIO

    ID | IDPRODOTTO | IDMARCHIO
    1 | 1 | 1
    2 | 2 | 2
    3 | 3 | 2
    4 | 4 | 2



    a questo punto, se aggiungi un prodotto nella tabella prodotti, dovrai aggiungere una riga anche nella tabella prodotto_categoria e prodotto_marchio...
    se cambi nome ad un prodotto, farai un UPDATE prodotti SET prodotto='ciliegia' WHERE id='1', e non dovrai modificare nient'altro
    se un prodotto cambia categoria, dovrai solo fare un UPDATE prodotto_categoria SET idcategoria='2' where idprodotto='1'

    cos'altro ti serve?

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.