• User Newbie

    una query complicata! qualcuno mi aiuta?

    Ciao a tutti!

    Ho un problemino che mi sta facendo impazzire image

    La situazione è questa.
    Ho uno shop online in preparazione e devo creare uno script in php che mi permetta di esportare una serie di informazioni dal catalogo prodotti a un file txt per inviarlo ai vari comparatori di prezzi.

    Il problema è che le info in questione sono su 6 tabelle diverse con chiavi diverse.

    La struttura è la seguente: (riporto solo i campi interessati)

    Primo livello:
    vm_product (contiene la maggior parte delle info ed è ordinata per product_id)

    Secondo livello: hanno tutte il campo product_id
    vm_product_price (contiene due colonne product_id e product_price)
    vm_product_mf_xref ( contiene product_id e manufacturer_id), da collegare a vm_manufacturer
    vm_product_category_xref(contiene product_id e category_id) da collegare a vm_category

    Terzo livello:
    vm_manufacturer (contiene manufacturer_id e mf_name)
    vm_category (contiene category_id e category_name)

    DOMANDA DA UN MILIONE DI ?!
    come si fa a fare una mega query che prnda tutti i dati collegandoli tra di loro ordinati per product_id e restituisca una tabellona da cui andare a generare l'output?

    Ho già provato varie join ma riesco a collegare solo tabelle con chiave comune e cmq fino a tre tabelle poi iniziano gli errori e data la mia scarsa esperienza con php sto veramente impazzendo!

    Grazie anche solo per aver letto la domanda.
    Marco


  • User Attivo

    La struttura è la seguente: (riporto solo i campi interessati)

    le tabelle sono tre? primo livello secondo livello? non si capisce niente...secondo me si capisce meglio con un dump(solo struttura) delle tabelle interessate.


  • User Newbie

    Cerco di spiegarmi meglio.

    Le tabelle sono 6 vm_product, vm_product_price , vm_product_mf_xref , vm_product_category_xref, vm_manufacturer, vm_category

    le ho divise x "livelli solo per far vedere che tra primo e secondo abbiamo il product_id in comune mentre tra secondo e terzo abbiamo category_id per collegare vm_product_category_xref con vm_category e manufacturer_id per collegare vm_product_mf_xref e vm_manufacturer.

    mi scuso per il linguaggio ma, come detto, non sono molto pratico.


  • User Attivo

    Forse gli errori che ti dà, sono dovuti hai nomi dei campi delle varie tabelle che sono uguali.
    Non si possono richiamare campi con nome uguale ma di tabelle diverse con un join tra tabelle.

    Quello che devi provare è utilizzo di AS, quando richiami un campo.
    SELECT tab1.id AS 'id_tab1', tab2.id AS 'id_tab2' FROM tab1, tab2

    AS permette di rinominare a piacere il campo di una tabella, solo temporaneamente per evitare ridondanza di nomi nella query.