【问题标题】:PHP - How to group from multiple sql queriesPHP - 如何从多个 sql 查询中分组
【发布时间】:2015-10-08 00:11:06
【问题描述】:

我明白了

for($i = $start_date;$start_date <= $end_date;$i->modify('+1 day')) {
        $i->format('Y-m-d').'<br />';
    $dates = $i->format('Y-m-d');
    echo $query = "
SELECT md.dish_id
     , md.daydate
     , d.id
     , d.dish_name
     , d.weight
     , d.price 
  FROM dishes d
  LEFT 
  JOIN menu_details md 
    ON d.id = md.dish_id
 WHERE md.daydate = '$dates' 
";
     $result = mysql_query($query);
    }
     while($row = mysql_fetch_array($result)) {
        echo 'Date: '.$row['daydate'].'Name: '.$row['dish_name'].'<br />';
     }

如何在新行上为每个日期排“dish_name”。在数据库中,有超过 1 行具有相同的日期=

【问题讨论】:

  • 抛开性能问题不谈,没有聚合函数的 GROUP BY 子句有点奇怪,可能会产生意想不到的结果。

标签: mysql while-loop fetch


【解决方案1】:

您应该尽量避免在循环中运行查询...

试试:

$query = "SELECT md.dish_id, md.daydate, d.id, d.dish_name, d.weight, d.price
FROM dishes d
LEFT JOIN menu_details md ON (d.id = md.dish_id)
WHERE md.daydate BETWEEN '$start_date' AND '$end_date'
GROUP BY md.daydate ";

$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
    echo 'Date: '.$row['daydate'].'Name: '.$row['dish_name'].'<br />';
}

分组依据是什么?我认为这可能会导致你失去一些结果......

【讨论】:

  • 是的,你是对的,但是如何回显特定日期的菜名?
  • 我询问了 group by,因为这意味着查询不会检索给定日期的所有菜肴 - 它会按日期分组,因此只返回一个。我发布的代码应该像以前一样回显每个结果......如果还有其他事情没有做,那么请提供一些额外的信息。
猜你喜欢
  • 2018-03-15
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多