2012-11-28 2 views
0

가능한 중복 된 경우 :
Moving a row from one table to another (Insert value list does not match column list)MySQL을 삽입 :: MAX (필드) +1 - 널

내 삽입 중 하나를 들어 나는 다음과 같은 한 : (PDO/MySQL을)

기본적으로 FixedFareId에 값이 삽입되지 않아 작동하지 않습니다.

무엇에 FixedFareId을 설정하는 null의 경우 내가 가장 높은 고정 요금 id 값보다 큰 1로 FixedFareId을 설정하고 싶은, 그리고 1 정확하게 코드로 문제가 무엇인지

확실하지 않음 FixedFareId 1 할 필요가 데이터베이스에 아무것도 존재하지 않는 경우

Error: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1SQL 

INSERT INTO tblfixedfares VALUES (NULL, 'le675', 'le115', '11', '1', 'Car'); 
INSERT INTO tblfixedfares VALUES (NULL, 'le675', 'le115', '22', '2', 'Car'); 

는 기본적으로 두 개의 인서트, 단일 쿼리에서 발생 :

하지만 난 응답 다음 얻을로는 FixedFareId에 대한 아무것도 따기되지 볼 수 있습니다

그래서 첫 번째 삽입 예 DS가 될 :

INSERT INTO tblfixedfares VALUES (NULL, **1**, 'le675', 'le115', '11', '1', 'Car'); 
INSERT INTO tblfixedfares VALUES (NULL, **1**, 'le675', 'le115', '22', '2', 'Car'); 

다음 삽입은 다음과 같습니다

INSERT INTO tblfixedfares VALUES (NULL, **2**, 'le675', 'le115', '11', '1', 'Car'); 
INSERT INTO tblfixedfares VALUES (NULL, **2**, 'le675', 'le115', '22', '2', 'Car'); 

데이터베이스는 다음과 같다 :

ID, 이 FixedFareId, ShortPostcodeA, ShortPostcodeB, 요금, DayHalf, VehicleSystemId

id가 자동 증가이면 null 인 경우 fixedfareid는 1이어야하고 null이 아닌 경우 fixedfareid의 최대 값 +1이 필요합니다.

+0

이 쿼리의 결과를 게시 할 수 있습니까, 'DESC tblfixedfares'? –

답변

1
은 다음과 같이 쿼리를 변경

: 이후

INSERT INTO tblfixedfares SELECT NULL, COALESCE(MAX(FixedFareId),0) + 1, etc.. 

FixedFareId의 MAX가 NULL 인 경우 따라서, 그것은 0으로 취급되고, '1': 당신이 찾고있는

아마도
  INSERT INTO tblfixedfares (SELECT NULL, IFNULL(MAX(FixedFareId), 0) + 1, '$fieldFrompc', '$fieldTopc', '$fieldDay', '1', 'Car' FROM tblfixedfares); 
+0

시도해 보았지만 여전히 작동하지 않습니다. FixedFareId의 MAX 값을 선택하지 않기 때문에 카운트가 올바르지 않습니다. – nsilva

+0

의미가 확실하지 않습니다 – nsilva

+0

트리거는 업데이트, 삽입 또는 삭제와 같은 테이블 이벤트를 처리하려는 경우에 사용됩니다 (http://dev.mysql.com /doc/refman/5.0/en/create-trigger.html) 게시/사전 데이터 처리를 추가 할 수 있습니다 – Anas

0

필드가 널인 경우 '1'이됩니다. (MAX (NULL)이 'NULL'을 산출하기 때문에).