2013-10-17 7 views
0

나는 열 inicio_periodo와 아이디, eleva라는 테이블이 있고, 조건이 만족 될 때 나는이 하나, 에서 일부 데이터를 다른 테이블을 채우려와 INSERT 명령. 현재 테이블에 난 그냥 데이터를 가지고 있기 때문에 나는 그것이 작동하지 않습니다 알고MySQL의 - 조건

for($i=0; $i < $tamanho_array_eleva-1; $i++) { 
    if($array_eleva[$i+1] - $array_eleva[$i] > 1){ 
     $con->query(" 
        INSERT INTO eventos_dias 
        SELECT DATE(inicio_periodo),'1','0','0','0' 
        FROM eleva 
        WHERE id = $array_eleva[$i] AND 0<=HOUR(inicio_periodo)<6"); 
     $con->query(" 
        INSERT INTO eventos_dias 
        SELECT DATE(inicio_periodo),'0','1','0','0' 
        FROM eleva 
        WHERE id = $array_eleva[$i] AND 6<=HOUR(inicio_periodo)<12"); 
     $con->query(" 
        INSERT INTO eventos_dias 
        SELECT DATE(inicio_periodo),'0','0','1','0' 
        FROM eleva 
        WHERE id = $array_eleva[$i] AND 12<=HOUR(inicio_periodo)<18"); 
     $con->query(" 
        INSERT INTO eventos_dias 
        SELECT DATE(inicio_periodo),'0','0','0','1' 
        FROM eleva 
        WHERE id = $array_eleva[$i] AND 18<=HOUR(inicio_periodo)<24"); 
    } 
} 

: 나는 일을해야하는 경우 문을 시도하고 있지만 관계없이 조건의 다른 테이블에 삽입하고, 여기에 내 코드입니다 시간은 16 ...하지만 인서트를 모두 실행하고 있습니다. 누구든지 오류가 보이나요?

그냥 경우 도움이 : 내 생각은 조건 number<=hour(inicio_periodo)<number이 만족하는 경우 선택한 값을 다른 테이블을 채우는 것입니다. 미리 감사드립니다!

+0

왜 (있는 경우) 오류를 출력하지? –

+0

실행 중이지만 잘못되었습니다. 나는 "조건에 관계없이 삽입하는 이유"라는 오류를 의미합니다. 그러나 어쨌든 고마워. – GustavoxD

+0

이 선택 부분 –

답변

1

이 쿼리를 보여줍니다 이유 :

mysql> SELECT 1 < 6; 
+-------+ 
| 1 < 6 | 
+-------+ 
|  1 | 
+-------+ 

을 마찬가지로 : 18 <= 16 < 24 =>(18 <= 16) < 24 =>0 < 24 =>1

그것의로

mysql> SELECT 1<= 16 < 6; 
+------------+ 
| 1<= 16 < 6 | 
+------------+ 
|   1 | 
+------------+ 

된다

mysql> SELECT (1 <= 16) < 6; 
+---------------+ 
| (1 <= 16) < 6 | 
+---------------+ 
|    1 | 
+---------------+ 

한마디로

, value BETWEEN min AND max를 사용, 그게 위해, 또는 별도의 검사 무엇을 사용 : 각 쿼리 후

mysql> SELECT 16 BETWEEN 1 AND 6; 
+--------------------+ 
| 16 BETWEEN 1 AND 6 | 
+--------------------+ 
|     0 | 
+--------------------+ 

mysql> SELECT 1 <= 16 AND 16 < 6; 
+--------------------+ 
| 1 <= 16 AND 16 < 6 | 
+--------------------+ 
|     0 | 
+--------------------+ 
1 row in set (0.00 sec) 
+0

그리고 그게 다야! :) 그러나 일종의 "멍청한"내 의견. 고마워요! 설명을 포함해서. – GustavoxD