2012-07-12 3 views
1

여기에 INSERT 문에 문제가 있다고 생각합니다. 코드를 실행하면 오류 메시지가 표시됩니다.INSERT 문에 오류 메시지가 있습니다.

Line: 5
Error: Sys.WebForms.PageRequestManagerServerErrorException: Incorrect syntax near ','.

내 where 절에 문제가 있습니까? 나는 C#을에서 호출하는 방법

INSERT into AppointmentDetails (SelectedApptDate, SelectedApptStartTime, 
           SelectedApptEndTime, SelectedWeddingPlanner) 
    SELECT 
     ApptID 
    from 
     Appointment 
    INNER JOIN 
     Appointment ON Appointment.ApptID = AppointmentDetails.ApptID 
    WHERE 
     SelectedApptDate = @SelectedApptDate, 
     SelectedApptStartTime = @SelectedApptStartTime, 
     SelectedApptEndTime = @SelectedApptEndTime, 
     SelectedWeddingPlanner = @SelectedWeddingPlanner 

이것은 : 여기

INSERT 진술

command.CommandText = "INSERT into AppointmentDetails (SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner) SELECT ApptID from Appointment INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID WHERE SelectedApptDate = @SelectedApptDate, SelectedApptStartTime = @SelectedApptStartTime, SelectedApptEndTime = @SelectedApptEndTime, SelectedWeddingPlanner = @SelectedWeddingPlanner"; 

    command.Connection = connection; 
    command.Parameters.AddWithValue("@SelectedApptDate", dateSelected); 
    command.Parameters.AddWithValue("@SelectedApptStartTime", timeStart); 
    command.Parameters.AddWithValue("@SelectedApptEndTime", timeEnd); 
    command.Parameters.AddWithValue("@SelectedWeddingPlanner", weddingplanner); 
+9

INSERT 문에는 4 개의 열이 있고 SELECT 문은 하나의 열만 반환합니다. 그것이 귀하의 성명서에 대한 주요 문제입니다. 또한 WHERE 절의 형식이 잘못되었습니다. 조건 사이에 쉼표 대신 AND 또는 OR을 사용해야합니다. – Matt

답변

5

, 대신 AND을 사용하여 WHERE 절의 조건을 구분하십시오. 당신은이 네 기둥에 삽입 한 열을 선택하기 때문에 당신이, 그 후 새로운 예외를 가지고 것이다 그러나

INSERT into AppointmentDetails (SelectedApptDate, SelectedApptStartTime, 
      SelectedApptEndTime, SelectedWeddingPlanner) 
SELECT ApptID 
from Appointment 
INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID 
WHERE SelectedApptDate = @SelectedApptDate 
    AND SelectedApptStartTime = @SelectedApptStartTime 
AND SelectedApptEndTime = @SelectedApptEndTime 
AND SelectedWeddingPlanner = @SelectedWeddingPlanner"; 

: SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner 당신은 이런 식으로 작성해야합니다. SELECT 문에 다른 세 열을 지정해야합니다.

+0

SELECT 열을 3 개 더 정의하면 무엇을 의미합니까? 나는 쉼표를 AND로 변경했는데 많은 사람들이 말한 다른 오류가 있습니다. 내가 실제로 생각하고있는 것은 데이터베이스에 Appointment와 AppointmentDetails로 구성된 2 개의 테이블이 있다는 것입니다. 내 ApptID는 내 AppointmentDetails 테이블의 외래 키이고 값을 내 AppointmentDetails 테이블에 삽입하는 경우 AppointmentDetails 테이블의 ApptID를 내 AppointID 테이블의 ApptID에 매핑해야합니다. 그게 맞습니까? – kelly

+0

@kelly 대신 '... SELECT ApptID ...'는 '... 선택 apptID, anotherColumn, SecondColumn, ThirdColumn ...'입니다. –

+0

감사합니다. 도움을 청합니다! 지금 오류가 없지만 데이터베이스에 성공적으로 삽입 할 수 없습니다. – kelly

2

당신은 ,WHERE 절을 분리하지 않는다; AND을 의미 했습니까?

INSERT INTO 
    AppointmentDetails (SelectedApptDate, SelectedApptStartTime, SelectedApptEndTime, SelectedWeddingPlanner) 
    SELECT ApptID FROM Appointment INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID 
    WHERE SelectedApptDate = @SelectedApptDate 
     AND SelectedApptStartTime = @SelectedApptStartTime 
     AND SelectedApptEndTime = @SelectedApptEndTime 
     AND SelectedWeddingPlanner = @SelectedWeddingPlanner 

또한 하나가 아닌 SELECT 개의 열이 필요합니다.

1

SELECT 문에는 한 개의 열만 있지만 INSERT에는 4 개의 열이 있어야합니다. 스키마는 어떤 모습입니까?

약속 테이블에서 INSERT로 전달하려는 필드와 변수에서 오는 것으로 가정되는 필드는 무엇입니까?

0

WHERE 절은 AND 또는 OR이어야합니다. 예를 들어

:

command.CommandText = "INSERT into AppointmentDetails (SelectedApptDate, 
                 SelectedApptStartTime, 
                 SelectedApptEndTime, 
                 SelectedWeddingPlanner) 

SELECT ApptID from Appointment 
INNER JOIN Appointment ON Appointment.ApptID = AppointmentDetails.ApptID 
WHERE SelectedApptDate = @SelectedApptDate 
AND SelectedApptStartTime = @SelectedApptStartTime 
AND SelectedApptEndTime = @SelectedApptEndTime 
AND SelectedWeddingPlanner = @SelectedWeddingPlanner"; 

또한, 당신의 INSERT 문은 4 열이 포함되어 있습니다,하지만 당신은 당신 SELECT 문 1 열을 반환한다.

관련 문제