使用ORDER BY和GROUP BY进行INNER JOIN

时间:2013-07-29 06:31:52

标签: mysql group-by sql-order-by inner-join

表:pm_productos
字段:prod_ID,prov_prod_nif,prod_fechafactura,prod_numerofactura,prod_totalproducto


表:pm_proveedores
字段:prov_ID,prov_nif,prov_nombre等......

我的查询是:

$query = "SELECT pm_productos.*, pp.prov_nombre FROM pm_productos INNER JOIN 
pm_proveedores pp ON pp.prov_nif = pm_productos.prov_prod_nif 
WHERE prod_nombreproducto like '%$search%' LIMIT $offset, $rowsperpage" ;

我的输出表是:

$result=mysql_query($query);
     while ($row = mysql_fetch_array($result))
{
  echo "<tr>
   <td>",$row[1],"</td>
   <td>",$row[10],"</td>
   <td>",date('d/m/Y',strtotime($row[2])),"
       <td><a href='fact_view.php?roll=".$row[3]."'>".$row[3]."</a></td>
   <td>",$row[4],"</td>
   <td>",$row[5],"</td>
   <td align=center>",$row[6],"</td>
   <td align=right>",$row[7],"</td>
   <td align=right>",$row[8],"</td>
   <td align=right>",$row[9],"</td>
}

代码工作正常,但我有2个问题:

  1. Page productos_view.php - 如何在此INNER JOIN中“按照prod_fechafactura订购”? (prod_fechafactura是日期字段)。

  2. Page facturas_view.php - 使用相同的INNER JOIN,如何在两个日期之间进行选择(在prod_fechafactura字段中),然后在表格中显示每个提供者的prod_totalproducto GROUP BY prod_numerofactura的SUM(prov_nif和prov_nombre) )? (如果没有选择日期,则显示prod_fechafactura订购的所有记录,如下所示:

  3. prov_nif,prov_nombre,prod_fechafactura,prod_numerofactura,prod_totalproducto的总和

1 个答案:

答案 0 :(得分:0)

这是第一个:按prod_fechafactura

排序
    $query = "SELECT pm_productos.*, pp.prov_nombre FROM pm_productos INNER JOIN 
    pm_proveedores pp ON pp.prov_nif = pm_productos.prov_prod_nif 
    WHERE prod_nombreproducto like '%$search%' LIMIT $offset, $rowsperpage 
    ORDER BY prod_fechafactura" ;

这是第二个:总结prod_totalproducto

    $query = "SELECT PP.prov_nif, pp.prov_nombre, SUM(prod_totalproducto)
    FROM pm_productos INNER JOIN 
    pm_proveedores pp ON pp.prov_nif = pm_productos.prov_prod_nif 
    WHERE prod_nombreproducto like '%$search%'
    AND prod_fechafactura BETWEEN 'start date' AND 'end date' 
    GROUP BY prov_nif,prov_nombre
    LIMIT $offset, $rowsperpage" ;