• User

    Trovare una logica su 4 tabelle

    Ciao, rieccomi.
    Vi posto l'URL di un immagine (non sono utente premium 🙂 ), dove si trovano 4 tabelle.
    h ttp://bubble.x-treme.it/Immagine.jpg

    Da queste tabelle devo fare in modo di recuperare i dati contenuti nel campo categories_id della tabella Categories e farlo inserire nel campo categories_id della tabella products_to_categories.

    A prima vista potrebbe non sembrare ma il nesso logico c'è e mi affido ai più esperti per avere qualche consiglio sulla/sulle query da utilizzare.


  • Consiglio Direttivo

    Ciao DigItalWarrior. 🙂

    Immagino che da qualche parte nel programma tu dia l'associazione prodotto-> categoria, giusto?
    All'atto di quell'inserimento prodotto, non farai altro che recuperare l'id del prodotto appena inserito (mysql_insert_id()) e quindi inserirai l'associazione prodotto->categoria nella tabella products_to_category. 😉


  • User

    Ciao Samyorn, grazie per avermi risposto.
    La cosa è un tantino più complicata perché qui i dati vengono presi da un file xml, inseriti in un db e successivamente distribuiti per le varie tabelle. Il problema è che non riesco proprio a fare la query giusta e più ci ragiono sopra e meno ne vengo fuori. Cercavo qualcuno con la mente un po' più fresca che riuscisce almeno a farmi un esempio di accenno di query da dove poter prendere spunto per andare avanti.
    Puoi farlo tu cortesemente?


  • Consiglio Direttivo

    Beh, allora dovresti spiegare passo passo cosa e come avviene per poter trovare insieme una soluzione. 😉


  • User

    Perfetto, grazie per volermi aiutare.
    Allora, tenterò di essere il più chiaro possibile e proverò a fare uno schema per farti capire meglio.

    
    Tabella products:
     ------------
    |products_id|
     ------------
    |              1|
     ------------
    
    Tabella products_description
     ---------------------------
    |products_id|products_name|
     ---------------------------
    |              1|Nintendo DSI   |
     ---------------------------
    
    Tabella categories_description
     ------------------------------
    |categories_id|categories_name|
     ------------------------------
    |                1|Nintendo DSI     |
     ------------------------------
    
    Tabella categories
     -------------
    |categories_id|
     -------------
    |                1|
     -------------
    
    ```In pratica da queste tabelle devo fare una query che mi dia il seguente risultato:
    

    Tabella products_to_categories

    |products_id|categories_id|

    | 1| 1|

    
    Penso che la query debba prima confrontare i nomi delle categorie dalle tabelle categories_description e products_description estrarne il products_id corrispondente ed andarlo ad inserire nella tabella products_to_categories insieme all'id della categoria.
    Non ce la faccio proprio ed ho bisogno davvero di una mano.

  • Consiglio Direttivo

    Immagino che alla categoria 1 appartengano più prodotti, giusto?

    Per ottenere quel che ti serve bisogna stabilire un metodo di associazione, manuale o automatico, tra prodotto e categoria. Il Database da solo non lo fa. 😄

    Mi permetto di farti una domanda, perché il category_id non lo metti nello stesso record del prodotto? 🙂

    
    Tabella products_description
     ------------------------------------------
    |products_id|products_name|  category_id |
     ------------------------------------------
    |              1| Nintendo DSI  |                 1|
     ------------------------------------------
    

  • User

    Ciao, confermo che sotto la stessa categoria possono appertenere più prodotti.
    Per quanto riguarda il category_id sinceramente sto facendo di tutto per evitare di toccare il db perché si tratta del db di oscommerce. Ma a questo punto se diventa davvero problematico mi sa che andrò a "manomettere" le tabelle anche se questo complicherà le cose.

    In sostanza quello che non riesco a fare è creare una relazione tra le tabelle al fine di estrarre le due id.


  • Consiglio Direttivo

    Io proverei, magari in locale o in un sito di prova, ad aggiungere il category_id come campo aggiuntivo.

    Rimane, in entrambi i casi, il problema di come far associare il category_id con il product_id.
    Lo farai manualmente? 🙂


  • User

    Giusto adesso osno riuscito ad ottenere qualcosa di buono con questo:

    
    $query = "SELECT categories_description.*,products.*". 
    "FROM categories_description,products " .
    "WHERE categories_description.categories_name = products.categories_name";
    
    $result = mysql_query($query) or die(mysql_error())or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    
    mysql_query("INSERT INTO products_to_categories (products_id, categories_id) 
    VALUES('".$row['products_id']."', '".$row['categories_id']."')")or die(mysql_error());
    }
    
    ```Solo che non mi da tutto o meglio mi estrae soltanto le categorie ma non le sottocategorie che peraltro stanno nella stessa tabella (categories) e le si distingue tramite il campo parent_id.
    A questo punto però mi rincuora il fatto che dopo oltre 15 giorni bloccato in questa parte di script qualcosa stia riuscendo a fare.
    Probabilmente devo rivedere la query.
    Come dicevo qui o in un altro post, non ricordo, quelli di oscommerce ce l'hanno messa tutta per complicare la vita a chi volesse mettere mano al db e/o allo script. ehehehe.

  • Consiglio Direttivo

    Ehm....ma le tabelle che citi ed alcuni nomi campo non li avevi detti prima.....ci manca qualcosa per poterti essere più utili. 😄

    Il campo categories_description per le sottocategorie avrà immagino nomi diversi, per questo non li estrae.
    Mi sa che ci serve qualche altra info in più per poter comprendere cosa hai e cosa vuoi ottenere. 😉

    Purtroppo non ho mai usato oscommerce quindi non so com'è strutturato il Database. 🙂