Select ultimul rand din grup cu aceeasi valoare - mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje: 285

Select ultimul rand din grup cu aceeasi valoare - mysql

Salutare,

Am urmatorul tabel in sql tbl_1:

Cod: Selectaţi tot

+---------+--------+---------+
| ID_PROD | PRODUS | VALOARE |
+---------+--------+---------+
|    1    | PROD_1 |    0    |
|    2    | PROD_2 |    0    |
|    2    | PROD_2 |    1    |
|    3    | PROD_2 |    1    |
|    4    | PROD_2 |    4    |
|    5    | PROD_2 |    0    |
|    5    | PROD_2 |    3    |
|    5    | PROD_2 |    0    |
+---------+--------+---------+
cum pot selecta valorile din tbl_1 in forma aceasta?

Cod: Selectaţi tot

+---------+--------+---------+
| ID_PROD | PRODUS | VALOARE |
+---------+--------+---------+
|    1    | PROD_1 |    0    |
|    2    | PROD_2 |    1    |
|    3    | PROD_1 |    1    |
|    4    | PROD_2 |    4    |
|    5    | PROD_2 |    0    |
+---------+--------+---------+
Daca ID_PROD apare de mai multe ori, cum pot selecta doar ultima valoare a sa ?

Multumesc!

cadou Mesaje: 328
Pai de ce ai vrea sa ai de mai multe ori același ID prod ..?

MarPlo Mesaje: 4343
Salut,
Nu stiu cum se poate face direct in mysql, dar poti face usor in php. Retii intr-un array, dupa ID, randurile selectate; si raman doar ultimile ce au acelasi ID.

Cod: Selectaţi tot

$conn = new mysqli('localhost', 'root', '', 'test');
 
$sql = "SELECT * FROM tbl"; 

$result = $conn->query($sql);
$arr =[];
if($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) $arr[$row['id']] =['PRODUS'=>$row['PRODUS'], 'VALOARE'=>$row['VALOARE']];
}

//Test
var_export($arr);
/*
array (
 1 => array ( 'PRODUS' => 'PROD_1', 'VALOARE' => '0', ),
 2 => array ( 'PRODUS' => 'PROD_2', 'VALOARE' => '1', ),
 3 => array ( 'PRODUS' => 'PROD_2', 'VALOARE' => '1', ),
 4 => array ( 'PRODUS' => 'PROD_2', 'VALOARE' => '4', )
)
*/

Subiecte similare