Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di rambco
    Registrato dal
    Aug 2001
    Messaggi
    582

    SQL Query eliminazione categorie

    Allora io ho tre tabelle , in una ci sono dei link con un campo che indica a che categoria punta(INT), una contenente nomi e id delle categorie, e una'altra che contine due colonne per costruire le sottocategorie(sono 2 colonne la prima indica la categoria in questione e la seconda indica a che categoria dipende)


    Ora se io elimino una categoria dovrei elimninare tutte le categoria figlie, i link (tutti compresi quelli appartenenti alle categorie figlie) e le associazioni!! Un bel grattacapo !

  2. #2
    bhè... una volta che hai l'id di categoria fai tre query e sei a posto. dov'è il problema?

    in ordine:

    1) cancelli i link

    2) cancelli le subcat

    3) cancelli la cat
    w la topa

  3. #3
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Originariamente inviato da saibal
    bhè... una volta che hai l'id di categoria fai tre query e sei a posto. dov'è il problema?

    in ordine:

    1) cancelli i link

    2) cancelli le subcat

    3) cancelli la cat
    il problema credo stia nel fatto che una categoria può avere più sottocategorie che a loro volta possono avere delle sottocategorie e ognuna può avere dei link

  4. #4
    da come spiegato da rambco tutto si basa sulla categoria.

    link --> categoria
    subcategoria --> categoria.

    quindi se si devono togliere link o subcategorie no problems... delete where categoria = quella_da_togliere

    Se si deve togliere una categoria prima si eliminano le relazioni e poi quando la ricerca della categoria sara' negativa in link e subcat si rimuove la categoria.... come detto da saibal

    Lo scenario presupposto da chris indicherebbe relazione molti a molti nel db ed allora ci vorrebbe una gomma per cancellare....


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

  5. #5
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Originariamente inviato da piero.mac
    Lo scenario presupposto da chris indicherebbe relazione molti a molti nel db ed allora ci vorrebbe una gomma per cancellare....


    se fosse così dovrebbe fare una funzione ricorsiva che scende nel ramo delle sottocategorie finchè non ne trova una senza ulteriori ramificazioni. a questo punto elimina gli eventuali link presenti, cancella la categoria e ritorna alla funzione che l'ha chiamata.

    codice:
    function elimina($cat){
        $res = @mysql_query(SELEZIONA SOTTOCATEGORIE DI $cat);
        if( !@mysql_num_rows($res) ){
            // elimina link
            // elimina categoria $cat
        }
        else{
            while( $row = @mysql_fetch_assoc($res) ){
                elimina($row['id']);
            }
        }
    }
    all'incirca una cosa del genere dovrebbe andare

  6. #6
    Potrebbe ....sarebbe una catena di santantonio... a parte che una funzione che richiama se stessa non e' proprio il massimo,

    Piu' logico che se una sottocategoria si dirama ulteriormente al punto di perdere il riferimento originale al link della categoria, venga assunta di fatto come "categoria nuova" con il suo link.

    Dipende da che deve fare il programma. Quasi sicuramente rileggendo attentamente lo scritto iniziale, le cose stanno come supponi tu, rimane pero' che specifica chiaramente tre tabelle e pure i campi utilizzati, il che e' in contrasto con lo scenario "catena di santantonio".



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

  7. #7
    Utente di HTML.it L'avatar di rambco
    Registrato dal
    Aug 2001
    Messaggi
    582
    Originariamente inviato da chris
    il problema credo stia nel fatto che una categoria può avere più sottocategorie che a loro volta possono avere delle sottocategorie e ognuna può avere dei link
    infatti è proprio cosi ! Una categoria puo avere sotocategorie che a loro volta possono avere altre sottocategorie e cosi via ! Quindi selezionando una categoria deve eliminare non solo i link di quella categoria ma anche tutte le sottocategorie a suavolta e cosi via !

  8. #8
    Originariamente inviato da rambco
    infatti è proprio cosi ! Una categoria puo avere sotocategorie che a loro volta possono avere altre sottocategorie e cosi via ! Quindi selezionando una categoria deve eliminare non solo i link di quella categoria ma anche tutte le sottocategorie a suavolta e cosi via !
    Se il legame e' vincolato alla categoria, come possono esserci solo tre tabelle? come sono gestite le sotto-sotto-categorie?

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

  9. #9
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Originariamente inviato da piero.mac
    Se il legame e' vincolato alla categoria, come possono esserci solo tre tabelle? come sono gestite le sotto-sotto-categorie?
    :master:

    per le categorie una struttura del genere si può gestire anche con una tabella sola
    id
    padre_id
    nome

    e per le categorie di primo livello si mette 0 a padre_id

  10. #10
    Originariamente inviato da chris
    :master:

    per le categorie una struttura del genere si può gestire anche con una tabella sola
    id
    padre_id
    nome

    e per le categorie di primo livello si mette 0 a padre_id
    Si puo' supporre certo, ma non corrisponde a quanto descritto nel primo post.


    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.