Visualizzazione risultati 1 fino 3 di 3

Discussione: Creare 2 array da una query con 2 JOIN

  1. #1
    Data registrazione
    05-06-2006
    Messaggi
    19

    Lightbulb Creare 2 array da una query con 2 JOIN

    Ragazzi devo estrarre dei dati da più tabelle "joinnate" con una query come questa

    Codice:
    SELECT * FROM product
    LEFT JOIN product_images ON product_images.id_product = product.id_product
    LEFT JOIN product_colors ON product_colors.id_product = product.id_product
    WHERE product.id_product = 1;
    Qual'è il modo migliore per ottenere in 2 array separati i dati delle immagini e dei colori associati al prodotto?

    Ciclando il risultato della query sono riuscito a crearli utilizzando delle condizioni ma la soluzione mi sembra un po' scomoda.

    Insomma, per farvi capire, vorrei arrivare ad ottenere le informazioni del prodotto in questo modo:

    Codice PHP:
    $product['product_name'] // stringa nome prodotto
    $product['product_images'] // array immagini associate

    Alcuni consigliano la soluzione GROUP BY + GROUP CONCAT per creare una lista di valori separati da virgola ma non è il risultato che voglio ottenere.

    Spero che qualcuno possa aiutarmi, grazie in anticipo

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,948

    Predefinito

    Che io sappia non esiste una funzione che estragga più record da una query contemporaneamente. L'unica via è usare un ciclo come penso hai fatto.

    Puoi anche usare la seconda soluzione con i valori separati dalla virgola, per poi riportarli nel formato che vuoi tu lavorando con explode().

    Ciao!

  3. #3
    Data registrazione
    05-06-2006
    Messaggi
    19

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Che io sappia non esiste una funzione che estragga più record da una query contemporaneamente. L'unica via è usare un ciclo come penso hai fatto.

    Puoi anche usare la seconda soluzione con i valori separati dalla virgola, per poi riportarli nel formato che vuoi tu lavorando con explode().

    Ciao!
    In quasi tutti i framework php (credo) esiste un sistema di relazioni delle tabelle che ti consente di creare un oggetto contenente tutte le informazioni relazionate al record selezionato...

    esempio:

    Codice PHP:
    $product->name; // stringa col nome del prodotto
    $product->images; // array delle immagini associate
    ...
    Non esiste una libreria o qualcosa che analizzi ed elabori l'array creato da fetch_array/assoc?
    Come si riproduce la stessa cosa se non si ha a disposizione un framework?

    Finché le tabelle JOINNATE sono 2 la soluzione del ciclo non è un problema, ma quando diventano di più?

    L'alternativa che ho utilizzato fino adesso è fare una query per ogni tabella di relazioni... ma avrei problemi di performance rispetto a fare una query unica con le varie JOIN, mi sbaglio?

    Per quanto riguarda la soluzione del GROUP_CONCAT il problema è che avrei solo i valori di un campo separati da virgola, esempio:

    Codice PHP:
    $product['images'] = 'img1.jpg,img2.jpg,img3.jpg,...'; // campo estratto GROUP_CONCAT
    Ma se oltre al nome immagine ho bisogno anche di un altro valore associato presente nella tabella delle immagini come mi comporto?

    Grazie mille per aver risposto

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •