- Home
- Categorie
- Coding e Sistemistica
- PHP
- Trovare una logica su 4 tabelle
-
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.jpgDa 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.
-
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.
-
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?
-
Beh, allora dovresti spiegare passo passo cosa e come avviene per poter trovare insieme una soluzione.
-
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.
-
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| ------------------------------------------
-
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.
-
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?
-
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.
-
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.