È possibile raggruppare i risultati di una join?

Ho questa query:

"SELECT `users`.`id`, `users_values`.`id_attribute`, `users_values`.`value` FROM `users`
 LEFT JOIN `users_values` ON users_values.id_user = users.id"

che mi restituisce un array contenente tante righe per quanti users_values trova per ogni utente

per esempio:

[0] => array(3) {
    ["id"] => string(1) "1"
    ["id_attribute"] => string(1) "1"
    ["value"] => string(5) "valore 1"
  }
  [1] => array(3) {
    ["id"] => string(1) "1"
    ["id_attribute"] => string(2) "34"
    ["value"] => string(6) "valore 34"
  }
  [2] => array(3) {
    ["id"] => string(2) "15"
    ["id_attribute"] => NULL
    ["value"] => NULL
  }

è possibile ottenere da una singola query qualcosa di simile a questo:

[0] => array(2) {
    ["id"] => string(1) "1"
    ["values"] = array{
        [0] = array(2){
            ["id_attribute"] => string(1) "1"
            ["value"] => string(5) "valore 1"
        }
        [1] = array(2){
            ["id_attribute"] => string(1) "34"
            ["value"] => string(6) "valore 34"
        }
      }
    }
  [1] => array(2) {
    ["id"] => string(2) "15"
    ["values"] => NULL
  }

ossia i valori della join raggruppati in "values"?

E in fine, mi consigliereste un bel libro sui database?

inviato 6 anni fa
arjuna
modificato 6 anni fa
X 0 X

Hai già provato ad utilizzare "group by"? Magari riesci ad ottenere bene o male quello che ti serve.

Purtroppo quello che vuoi ottenere non è possibile farlo con una query sql in quanto quest'ultima estrae le varie tuple che possono essere viste come le varie righe di una tabella.

Puoi ristrutturare i tuoi dati usando il php.

Per un libro sui database non so proprio cosa consigliarti.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

group by sovrascrive i dati, non li raggruppa... ma come dici tu mysql non restituisce array... mi sono deciso per fare una query per gli utenti e poi per ogni utente una query per i valori, utilizzando magari un sistema di cache dei risultati per migliorare le prestazioni.

risposto 6 anni fa
arjuna
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda