이 두 쿼리가 있습니다. 나의 첫 번째 질문은 자료의 가용성을 확인하는 것이고, 이것이 내가 지금 직면하고있는 주요 문제이기도하다. 한 번에 보류 된 모든 자료를 선택합니다. 그래서 schedule_dummy 테이블에 대한이 테이블 날짜가 있습니다. 참고 : codeigniter를 사용하고 있습니다.검색 범위가 php/mysql에서 작동하지 않습니다.
CREATE TABLE schedule_dummy
(
`materialID` int,
`date_reserve` date,
`start_time` time,
`end_time` time
);
------DB Table schedule_dummy --------
materialID | date_reserve | start_time | end_time
----------------------------------------------------------
7 | 2013-08-31 | 13:00:00 | 13:30:00
8 | 2013-08-31 | 13:00:00 | 14:00:00
----------------------------------------------------------
내 두 번째 쿼리가 된 ID가 첫 번째 쿼리에서 검색 where_not_in 자료를 검색하는 것입니다. 내가 MySQL: could not select data with time range을 시도했습니다
------DB Table materials--------
id | cid | mname | mdesc
----------------------------------------------------------
7 | 1 | accer | acer
10 | 1 | scanner | scanner
12 | 1 | prjector | scanner
----------------------------------------------------------
: 그리고 재료 테이블이 테이블 날짜가 있습니다. 저는 많은 연구를 해왔지만 여전히 필요한 것을 얻지 못했습니다.
그래서이는 내 전체 기능의 모습과 같은 :이 쿼리에서
function check_materials(){
//$this->output->enable_profiler(TRUE);
$start = date("H:i:s", strtotime($this->input->post('start')));
$end = date("H:i:s", strtotime($this->input->post('end')));
$date_reserve = $this->input->post('date_reserve');
$id = $this->input->post('id');
$sql = "SELECT id, materialID FROM schedule_dummy WHERE date_reserve = ? AND time(?) BETWEEN start_time AND end_time AND time(?) BETWEEN start_time AND end_time";
$query = $this->db->query($sql,array($date_reserve,$start,$end));
$ids = array();
if($query->num_rows() > 0){
foreach($query->result() as $rows){
$ids[] = $rows->materialID;
}
}
$data = array();
$n = count($ids);
$idz = array();
if($n > 0){
$q = $this->db->select('*')->where_not_in('id',$ids)->where('cid', $id)->get('materials');
if($q->num_rows() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
}
return $data;
}else{
$q = $this->db->select('*')->where('cid',$id)->get('materials');
if($q->num_rows() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
}
return $data;
}
}
내가 검색하지 않습니다 8
의 materialID
와 schedule_dummy에서 start_time = 13:30:00
end_time = 14:00:00
에 다음 데이터를 선택할 때 문제가 있습니다. start_time 및 end_time은 13:00:00
에서 14:00:00
까지이므로
그리고 또한 나는이를하려고하면
$sql = "
SELECT materialID
FROM schedule_dummy
WHERE
date_reserve = ?
AND start_time >= time(?) AND end_time <= time(?)";
나는 그것이 schedule_dummy에서 데이터를 검색하지 않습니다 같은 입력을 선택
. 그래서 여기서 내가 실수를 저지르고 있다고 생각하니? 내 논리가 틀렸어? 아니면 내 쿼리 중 하나? 감사.
중복 가능성 [사용하여 데이터를 얻는 방법> = AND <= PHP/MySQL은 12 시간의 시간 형식? (http://stackoverflow.com/questions/18531453/how-to-get -the-data-in-a-12hr-time-format-in-php-mysql) –
@Venkat : Yah 그것은 내 스레드이기도합니다. 그러나 같은 경우는 아닙니다. 그리고 제발 친절하게 제 문제를 읽으십시오. – leonardeveloper
테이블의 구조를 보여주세요 :'describe schedule_dummy' –