【问题标题】:Group column name in database which has same value数据库中具有相同值的组列名
【发布时间】:2016-02-01 06:35:22
【问题描述】:

我正在制作一个程序来添加有自己的营业时间和关闭时间的商店数量(不同的日子可能不同)

我的存储开放时间和关闭时间的数据库结构是

所以在从这个表中获取我的数据时,我想对具有相同值的列名进行分组..

第一个商店的输出应该是

monday, tuesday, wednesday, thrusday, friday, saturday, sunday => 10:00-am to 8:00-pm

最后一个商店的输出应该是

monday, tuesday, wednesday, friday, saturday => 10:00-am to 8:00-pm

thrusday => 9:30-am to 5:00-pm

sunday => 10:00-am to 4:30-pm

那么我如何编写查询来获取这样的记录..

谢谢,

【问题讨论】:

  • 制作列值数组,如果值相同,则数组的值将是列名,否则制作新数组
  • 你想在数组中输出?像----> $result = ['周一、周二、周三、周五、周六' => '10:00-am to 8:00-pm', 'thrusday' => '9:30-am to 5 :00-pm', '星期日' => '10:00-am to 4:30-pm']
  • @Monty,是的,它也可以工作......

标签: php mysql sql


【解决方案1】:

这对你有帮助吗?

$array = 现在来自数据库并处理其输入。

$standardTime = 保存商店默认打开和关闭时间的数组。

我不确定这将如何使用 SQL 或直接通过查询实现,但在这里我尝试使用 PHP 脚本。希望这会对你有所帮助。

    $array =  array(
      'monday' => "10:30-am to 08:00-pm",
      'tuesday' => "10:30-am to 08:00-pm",
      'wedensday' => "10:30-am to 08:00-pm",
      'thursday' => "09:30-am to 05:00-pm",
      'friday' => "10:30-am to 08:00-pm",
      'saturday' => "10:30-am to 08:00-pm",
      'sunday' => "10:00-am to 04:30-pm",
    );

    $standardTime = array("10:30-am to 08:00-pm","10:30-am to 08:00-pm","10:30-am to 08:00-pm","10:30-am to 08:00-pm","10:30-am to 08:00-pm","10:30-am to 08:00-pm","10:30-am to 08:00-pm");
    $diff = array_diff($array,$standardTime);
    $daysWithDiffTimmings = '';
    if(is_array($diff) && count($diff) > 0) {
        $daysThatHaveDiffTime = array_keys($diff);
        foreach($daysThatHaveDiffTime as $day) {
            $daysWithDiffTimmings.= $day.' = '.$diff[$day]."<br/>";
            unset($array[$day]);
       }
     }

    $remainingDaysWithSameTime = array_keys($array);
    $daysWithSameTime =  implode(",", $remainingDaysWithSameTime);
    $daysWithSameTime .= ' = 10:30-am to 08:00-pm<br/>';

    echo $daysWithSameTime;
    echo $daysWithDiffTimmings;

这会给你输出:

monday,tuesday,wedensday,friday,saturday = 10:30-am to 08:00-pm
thursday = 09:30-am to 05:00-pm
sunday = 10:00-am to 04:30-pm

【讨论】:

    【解决方案2】:

    试试这个:

    $question = array(
            'monday' => '10:00-am to 8:00-pm',
            'tuesday' => '10:00-am to 8:00-pm',
            'wednesday' => '10:00-am to 8:00-pm',
            'thrusday' => '9:30-am to 5:00-pm',
            'friday' => '10:00-am to 8:00-pm',
            'saturday' => '10:00-am to 8:00-pm',
            'sunday' => '10:00-am to 4:30-pm',
        );
    $result = array();
    foreach ($question as $key => $value) {
        if(isset($result[$value]))
            $result[$value] .= ', '.$key;
        else
            $result[$value] = $key;
    }
    echo "<pre>".print_r(array_flip($result),1)."</pre>";
    

    输出:

    Array
    (
        [monday, tuesday, wednesday, friday, saturday] => 10:00-am to 8:00-pm
        [thrusday] => 9:30-am to 5:00-pm
        [sunday] => 10:00-am to 4:30-pm
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2020-02-04
      相关资源
      最近更新 更多