0

これは 1 つのクエリで実行できますか?

テーブル日:

dID
enable
holiday
fewMore

テーブル セグメント:

d_ID //foregn key to day->dID
startTime
endTime
fewMore

クエリ:

SELECT dID, enabled,holiday,  
       TIME_TO_SEC(dHaurs) as wsTimeHHmm,
       DATE_FORMAT(dDate, '%d') as dateForComparing,
       DATE_FORMAT(start, '%H:%i') as startTime,
       DATE_FORMAT(end, '%H:%i') as endTime 
FROM day d                                  
LEFT JOIN segment ws 
ON ws.d_ID = d.dID
WHERE dDate BETWEEN '" . $startDate . "' AND  '" . $endDate . "'                                
ORDER by dateForComparing

私が得ている結果:

dID:10, start time:08:00, end time:09:00, holiday:0, enabled:1
dID:10, start time:09:00, end time:10:00, holiday:0, enabled:1
dID:11, start time:08:00, end time:10:00, holiday:1, enabled:1

しかし、すべてのセグメントを同じ d_ID でグループ化したいと考えています。

dID:10, array((start time:08:00, end time:09:00),(start time:09:00, end time:10:00)), holiday:0, enabled:1

GROUP_CONCAT(wsID,start, end)...で試してみましGROUP BY dIDたが、正しい方法かどうかわかりませんし、関数を使用することもできませんDATE_FORMAT(start, '%H:%i') as startTime

これはmysqlのみで行うことができますか?

更新:現在、結果から配列を作成しています:

  $returnData  [] =array(array(dID =>"dID",
                         endTime => $end_time,
                         startTime=> $start_time,...
                               ),
                        array( enabled=> $enabled,
                                holiday =>$holiday
                               )
                         );
echo json_encode($returnData);
4

1 に答える 1

0

MySQL では配列を返すことはできませんが、次のように出力を操作できます。

dID:10, start time:08:00, end time:10:00, holiday:0, enabled:1
于 2013-01-26T19:34:49.720 に答える