MySQL Query Database Attendance входит / выходит

У меня есть база данных Microsoft Access

Таблица CHECKTIME

USERID    CHEKTIME
1         2015-06-21 07:34:00
1         2015-06-21 07:50:00
1         2015-06-21 16:00:00
1         2015-06-21 16:48:00
2         2015-06-21 07:08:00
2         2015-06-21 13:48:00
2         2015-06-21 17:08:00
3         ....................

Я хочу перенести данные в MySQL запрос с результатами:

userId    colDate         colIn          colOut
1         2015-06-21      07:34:00       16:48:00
2         2015-06-21      07:08:00       17:08:00
3         ..........      ........       ........

пожалуйста, помогите мне

этот запрос заставляет меня застрять в финальном тесте

почему данные не могут быть вставлены в PHPMyAdmin? или MS Access не может объявить MIN и MAX запрос? Как насчет этой функции и запроса:

public function getPresensi(){


$dbName = $_SERVER['DOCUMENT_ROOT']."/presensi-app/assets/database/upj.mdb";
$user = "";
$password = "";


$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", $user, $password);

$qry = "SELECT USERID as id, CHECKTIME as check, min(CHECKTIME) as masuk, max(CHECKTIME) as keluar FROM CHECKINOUT group by USERID,date(CHECKTIME)";

$result = odbc_exec($conn,$qry);

while ($data[] = odbc_fetch_array($result));

odbc_free_result($result);

odbc_close($conn);

$tbl = 'tb_kehadiran';
$db_mysql = $this->load->database('default',TRUE);
$db_mysql->trans_start();
$db_mysql->truncate($tbl);
foreach($data as $k => $v){

$data_mysql = array(

'colUserID' => $v['id'],
'colDate' => $v['check'],
'colJamMasuk' => $v['masuk'],
'colJamKeluar' => $v['keluar'],

);
if($data_mysql != null){
$db_mysql->insert($tbl, $data_mysql);
}

}

$db_mysql->trans_complete();
$db_mysql->close();


}

0

Решение

Опираясь на ваш комментарий, попробуйте это:

SELECT USERID as id, CHEKTIME as date, MIN(CHEKTIME) as colIn, MAX(CHEKTIME) as colOut FROM timetable group by userid,date(chektime)

Когда используешь Максимум а также мин чтобы получить результаты, вы получите только один результат, если вы не используете опцию группировки по. Добавьте группировку по группам по пользователю и дате (таким образом, вы также получите более одной даты для каждого пользователя)

Вы можете проверить это здесь на sqlfiddle

и для изменения формата даты используйте:

date_format(CHEKTIME,'%y-%m-%d') as date

Вы изменили вопрос с тех пор, как я начал
Это краткое изложение проблем, с которыми я сталкивался до сих пор в вашем посте / коде.

  1. Вы не заявляете, что вы MySQL соединение
  2. Вы освобождаете результат и закрываете соединение с MS-доступом, прежде чем делать что-либо с данными
  3. вы используете устаревший MySQL вместо MySQL
  4. вы не проверяли, возвращаете ли вы результаты запроса (и MS-Access, и ваш код)

Делайте шаг за шагом и начинайте отлаживать то, что у вас есть / нет.

Шаги для решения:

  1. Протестируйте запрос в MS-Access и посмотрите, есть ли у вас результаты, исправьте, если нет результата
  2. Измените свой код, чтобы распечатать результат на экране, прежде чем делать что-либо еще
  3. создать другое соединение с MySQL (не MS-Access)

для отображения всех ошибок добавьте следующее сразу после открытия php

 ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);
$error='';

Обновление 2:
Запрос ms-access должен быть:

SELECT Checktime.USERID, DateValue([CHEKTIME]) AS [Day], Min(TimeValue([CHEKTIME])) AS [In], Max(TimeValue([CHEKTIME])) AS Out FROM Checktime GROUP BY Checktime.USERID, DateValue([CHEKTIME]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]