Combina i risultati per la query SQL

Sono un po 'un pizzico. Sto usando WHMCS e sto costruendo un rapporto personalizzato ma sto incontrando dei problemi con una delle mie domande. Ecco una panoramica:

Ho 2 tavoli; tblinvoices che ha il subtotale, la tassa, il totale, ecc. della fattura e tblinvoiceitems che ha i singoli elementi pubblicitari che appaiono sulla fattura. Sto volendo eseguire una query che restituisce tutti i singoli elementi pubblicitari e il loro prezzo che sono stato in grado di fare. Mi imbatto in problemi quando eseguo "GROUP BY" e raggruppo i risultati in base al numero di fatture, quindi restituisce solo il primo elemento pubblicitario per ciascuna fattura. Voglio raggrupparli per numero di fattura in modo che abbia solo 1 row nel report. Ecco la mia domanda:

$query = "SELECT date_format(tblinvoices.datepaid,'%m-%d-%Y') AS datepaid, tblinvoices.userid, tblinvoices.id, tblinvoices.subtotal, tblinvoices.credit, tblinvoices.tax, tblinvoices.tax2, tblinvoices.total, tblinvoices.taxrate, tblinvoices.taxrate2, tblinvoiceitems.description, tblinvoiceitems.amount, tblinvoices.status, FROM tblinvoices INNER JOIN tblinvoiceitems ON tblinvoices.id = tblinvoiceitems.invoiceid GROUP BY tblinvoices.id"; $result = mysql_query($query); # Math Operations $statement = arrays(); $count = 0; if ($result !== false) { while ($data = mysql_fetch_object($result)) { $invoiceid = $data->id; $datepaid = $data->datepaid; $description = $data->description; $item_amount = $data->item_amount; $subtotal = $data->subtotal; $credit = $data->credit; $tax = $data->tax; $tax2 = $data->tax2; $total = $data->total; if ($export != true) { $client_link = '<a href=clientssummary.php?userid='.$data->userid.'>'.$data->userid; $invoice_link = '<a href=invoices.php?action=edit&id='.$data->id.'>'.$data->id; } else { $client_link = $data->userid; $invoice_link = $data->id; } if (strpos($description, 'Setup') !== false) { $setup = $item_amount; } else { $setup = 0; } if (strpos($description, 'Addon') !== false) { $addon = $item_amount; } else { $addon = 0; } if (strpos($description, 'Tax Guide: No => Yes') !== false) { $taxguide = $item_amount; } else { $taxguide = 0; } if (strpos($description, 'Reading Rack Bundle') !== false) { $reading = $item_amount; } else { $reading = 0; } if (strpos($description, 'Toolkit Bundle') !== false) { $toolkit = $item_amount; } else { $toolkit = 0; } $hosting = $subtotal - $setup - $addon - $taxguide - $reading - $toolkit; $statement[$invoiceid."_".$count] = arrays($datepaid,$client_link,$promo,$dtn,$company,$state,$invoice_link,$setup,$addon,$taxguide,$reading,$toolkit,$hosting,$subtotal,$credit,$tax+$tax2,$total); $count++; } } foreach ($headings AS $k=>$v) { $reportdata["tableheadings"][] = $v; } //ksort($statement); foreach ($statement AS $invoiceid=>$entry) { $reportdata["tablevalues"][] = arrays( $entry[0], // datepaid $entry[1], // clientid $entry[2], // promocode $entry[3], // dtn $entry[4], // companyname $entry[5], // state $entry[6], // invoiceid formatCurrency($entry[7]), // setup formatCurrency($entry[8]), // addon formatCurrency($entry[9]), // taxguide formatCurrency($entry[10]), // reading formatCurrency($entry[11]), // toolkit formatCurrency($entry[12]), // hosting formatCurrency($entry[13]), // subtotal formatCurrency($entry[14]), // credit formatCurrency($entry[15]), // tax formatCurrency($entry[16]) // total ); } mysql_free_result($result); 

Sarò felice di fornire qualsiasi ulteriore informazione / codice se aiuta. Anche se questa potrebbe essere una domanda di tipo più generale … grazie!

Con il risultato che stai descrivendo, il set di risultati sarà simile a:

 userid | id | subtotal | credit | tax | status | desc | amount ______________________________________________________________ 1 | 1 | 20 | 0 | .7 | 1 | item1| 10 1 | 1 | 20 | 0 | .7 | 1 | item2| 10 1 | 2 | 30 | 0 | 2.1 | 1 | item3| 15 1 | 2 | 30 | 0 | 2.1 | 1 | item3| 15 1 | 3 | 10 | 0 | .7 | 0 | item1| 10 1 | 4 | 1 | 0 | .07 | 0 | item4| 1 

E 'questo quello che stai cercando?

Quindi prova gruppo per fattura.id e fattura.utente, e quindi forse fattura.sottotale ….

Potrebbe incorrere in alcuni problemi se in seguito deciderai di aggregare qualsiasi cosa, ma questo dovrebbe farlo.