2015-12-18 7 views
5

Questo è il mio script php che seleziona tutto dalla fatturaNo dove fatturaNo è distinto.Come accedere a un particolare valore dal database mysql usando php?

<?php 

require 'init.php'; 
$query = 'SELECT * FROM `selected_items` WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) GROUP BY invoiceNo;'; 
$res = mysqli_query($con, $query); 
$result = []; 
while ($row = mysqli_fetch_array($res)) { 
    array_push($result, [ 
     'custInfo' => $row[0], 
     'invoiceNo' => $row[1], 
     'barcode'  => $row[2], 
     'description' => $row[3], 
     'weight'  => $row[4], 
     'rate'  => $row[5], 
     'makingAmt' => $row[6], 
     'net_rate' => $row[7], 
     'itemTotal' => $row[8], 
     'vat'   => $row[9], 
     'sum_total' => $row[10], 
     'bill_type' => $row[11], 
     'date'  => $row[12], 
     'advance'  => $row[13], 
     'balance'  => $row[14], 
    ]); 
} 
echo json_encode(['result' => $result]); 
mysqli_close($con); 

enter image description here

In questo momento questo script mi ​​dà il primo valore da sum_total cioè mi dà la prima fila dal mio database come posso ottenere gli ultimi row.I Sono nuovo di programmazione qualsiasi suggerimento o aiuto fa è apprezzato :)

+0

Perché non utilizzare l'ordinamento 'desc' ? –

+0

@AjayMakwana puoi dare un esempio. Grazie :) –

+0

penso che tu voglia il massimo somma totale dalla fattura unica giusto? vuoi che tutta la fattura con quella o solo l'ordinamento di desc sum_total – rahul

risposta

2
Select * From (
SELECT t.*, 
     @rownum := @rownum + 1 AS rank 
    FROM selected_items t, 
     (SELECT @rownum := 0) r order by rank DESC 
) si GROUP BY si.invoiceNo; 

Questa query risolto il problema

0

tentano in questo modo:

$query ="SELECT * FROM `selected_items` WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) ORDER BY `sum_total` DESC"; 
$query ="SELECT max(`sum_total`) FROM selected_items"; 

Dove column_name può essere variare.

+0

Questo dà lo stesso risultato Ho ancora la prima riga –

+0

prova la seconda query –

+0

@AjayMakwana la tua seconda query darà solo un record – rahul

0

Prova questa, penso che questo sia che si desidera, possa aiutare

$query ="SELECT max(`sum_total`) FROM `selected_items` GROUP BY invoiceNo;"; 
+0

altrimenti puoi modificarlo secondo le tue necessità o dirmi esattamente cosa vuoi – rahul

+0

Rahul ma vuoi anche tutti i valori da quella riga. Non riesco a ottenere l'ultima riga per quella particolare fattura. Grazie :) –

+0

sì, certo, aggiungi i valori selezionati da virgola dopo max ('sum_total'), campo_esempio da ..... – rahul

0

Se avete bisogno di ottenere solo lo scorso limite uso record.

$query ="SELECT * FROM `selected_items` GROUP BY invoiceNo ORDER BY `sum_total` DESC limit 1; 

Se avete bisogno di ottenere più alto al più basso record di sum_total provare il codice qui sotto,

$query ="SELECT * FROM `selected_items` where `sum_total` = (SELECT max(`sum_total`) FROM `selected_items` GROUP BY invoiceNo) GROUP BY invoiceNo ORDER BY `sum_total` DESC; 
+0

Grazie Arun Ho provato entrambe le tue soluzioni il primo mi dà ancora la prima riga. E il 2 ° riporta un errore che dice 1064 - Hai un errore nella sintassi SQL; controlla il manuale che corrisponde alla tua versione del server MySQL per la sintassi corretta da usare vicino a 'DESC LIMIT 0, 30' alla riga 1 –

+0

Mi mancava aggiungere 'sum_total' per l'ordine in seconda query. Ora modificato. Ok. Ho bisogno di sapere chiaramente una cosa, vuoi tutti i record con fattura unicaNo o solo record finale? – Arun

+0

Desidero il record finale della fattura univocaNo. –

Problemi correlati