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: 280

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
Pai de ce ai vrea sa ai de mai multe ori același ID prod ..?

MarPlo
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