è possibile creare una query che mi ponga i record come 1 a 1 (1 ordine una riga)?
In breve, no: se fosse possibile ti ritroveresti una tabella le cui righe avrebbero un numero variabile di colonne, alcune con lo stesso nome.
Però puoi realizzare ciò di cui hai bisogno in PHP. L'idea è di leggere i dati così come stai facendo ora, ottenendo un risultato di questo tipo (assumendo che la tabella ordini abbia una chiave primaria id):
Codice:
id | nome | cognome | denominazione | prezzo | quantità | dettagli
1 | "A" | "AA" | "prodotto 1" | 10.00 | 50 | "..."
1 | "A" | "AA" | "prodotto 2" | 15.00 | 20 | "..."
1 | "A" | "AA" | "prodotto 3" | 9.00 | 10 | "..."
2 | "B" | "BB" | "prodotto 1" | 17.00 | 35 | "..."
2 | "B" | "BB" | "prodotto 2" | 19.00 | 27 | "..."
3 | "C" | "CC" | "prodotto 1" | 5.00 | 13 | "..."
A questo punto puoi utilizzare la chiave primaria di ordini come indice di un vettore associativo di ordini. Il risultato da ottenere è questo (esemplificato in JSON):
Codice:
ordini = [
{
"id": 1,
"nome": "A",
"cognome": "AA",
"prodotti": [
{
"denominazione": "prodotto 1",
"prezzo": 10,
"quantità": 50,
"dettagli": "..."
},
{
"denominazione": "prodotto 2",
"prezzo": 15,
"quantità": 20,
"dettagli": "..."
},
{
"denominazione": "prodotto 3",
"prezzo": 9,
"quantità": 10,
"dettagli": "..."
}
]
},
...
{
"id": 3,
"nome": "C",
"cognome": "CC",
"prodotti": [
{
"denominazione": "prodotto 1",
"prezzo": 10,
"quantità": 50,
"dettagli: "..."
}
]
}
]
Una possibile procedura, in pseudocodice:
Codice:
result = query("...")
ordini = []
foreach result as row:
id = row['id']
if !isset(ordini[id]):
ordini[id] = [
'nome' => row['nome'],
'cognome' => row['cognome'],
'prodotti' => []
]
endif
ordini[id]['prodotti'].push([
'denominazione' => row['denominazione'],
'prezzo' => row['prezzo'],
'quantità' => row['quantità'],
'dettagli' => row['dettagli'],
])
endforeach
PS: Dovresti valutare i nomi che hai dato alle tabelle. Gli ordini non hanno un nome ed un cognome, piuttosto dovrebbero avere il riferimento ad un cliente. E chiamare una tabella righe è offensivo nei suoi confronti.