2012-06-06 3 views
0

주차 공간이있는 곳을 알려주는 데이터베이스 쿼리를 작성하고 있습니다. 7 월에만 사용됩니다.SQL 데이터베이스에 액세스 할 쿼리

모든 공백을 표시하고 그 날짜를 임대했는지 여부를 보여주는 표가 하나 있습니다. 공백과 크기가있는 다른 테이블이 있습니다. 선택한 기간 내에 모든 요일에 사용할 수 있고 올바른 크기의 공간을 선택할 수 있기를 원합니다.

주어진 시간 내에 사용 가능한 공간 만 선택하면 문제가 발생합니다. 지금까지는 쿼리가 있지만이 파트가 먼저 작동하기 때문에 공간 크기와 관련된 내용은 없습니다. 순간

SELECT C.Plads, SUM[C.optaget] C.[ledlig] FROM 
    (SELECT Plads FROM OptagetPladser AS A Inner JOIN Bådpladser as B ON 
    A.plads=B.Pladsnummer 
    WHERE 
    (A.dato>=" + Startdato + "and A.dato<="+Slutdato+") //checking the time period 
    and (a.optaget = 0))       //0 means the space is availible 
    as C 
    GROUP BY C.Plads 
    HAVING SUM(C.optaget) >="+ diffResult+")";//diff result is the timespan 

나는 오류

받고 있어요

구문 오류가 쿼리 식 (누락 된 연산자) 'SUM [C.optaget]'

어떤 아이디어?

+1

SUM() 식에서 []을()로 바꾸십시오. – Arvo

+1

어떤 데이터베이스입니까? SQL Server, Oracle, MySQL ...? – Fionnuala

+0

다시,이 MS Access입니까? SQL은 버전마다 다릅니다. – Fionnuala

답변

2

우선 SQL 쿼리를 다시 작성해야합니다. 너무 많은 간단한 오류가 있습니다.

다음은 몇 가지 예입니다.

  • 시도 ','이 추가 및 쿼리의 일부 내용을 변경 :

    SELECT C.Plads, SUM(C.optaget), C.ledlig FROM

  • 귀하의 하위 쿼리 C 너무 optagetledlig 분야가 없습니다. 이 직후 해당 필드를 추가 해결하려면 sebquery의 SELECT

  • 여기에 구문 오류 수정 :

    (A.dato>=" + Startdato + "and A.dato<="+Slutdato+")해야한다 :

    (A.dato >= " + Startdato + " and A.dato <= "+Slutdato+")

  • 귀하의 마지막 큰 따옴표가 마지막뿐만 아니라 중복을 ')'. 그것을 제거

    HAVING SUM(C.optaget) >= "+ diffResult+" ;//diff result is the timespan

이 다음은 SQL 쿼리가 보일 것입니다 방법이다. 제발, 참고 : 서브 쿼리 C에 여전히 optagetledlig 필드가 누락되었습니다. 내가 믿는

SELECT C.Plads, SUM(C.optaget), C.ledlig FROM 
(
    SELECT Plads FROM OptagetPladser AS A 
    INNER JOIN Bådpladser as B 
    ON A.plads = B.Pladsnummer 
    WHERE (A.dato >= " + Startdato + " AND A.dato <= " + Slutdato + ") 
     AND (a.optaget = 0) 
) 
AS C 
GROUP BY C.Plads 
HAVING SUM(C.optaget) >= " + diffResult + "; 

는 건축이나 성능 문제가 나타날 수 있지만, 테이블 데이터없이 나는 확실히 그것을 말할 수 없습니다.

+0

SELECT C.Plads, SUM (C.optaget) FROM (Aplads = B.Pladsnummer로 내부 조인 보드 드래프로 OptagetPladser에서 Plads 선택 B.PLlassnummer WHERE (A.dato> = "+ Startdato +"및 A.dato <= "+ Slutdato +") 및 (a.(optaget) = "+ diffResult +") – DavyGravy

+0

그래도 여전히 오타 및 구문 오류가 있습니다. 또한,'C.optaget' 필드는 어디에 있습니까? 제 생각에, 서브 쿼리'C'는'AND (a.optaget = 0)'조건 때문에 0이 아닌'optaget' 값을주지 않습니다. 말하기 : 하위 쿼리에서 'Plads' 필드 만 검색합니다. 이유는 무엇입니까? 내 생각에, 당신은 당신의 질문을 다시 작성해야합니다. ' – gahcep

+0

세부 테이블 설명을 제공 할 수 있으며 테이블 이름을 영어로 번역 할 수 있습니까? – gahcep

관련 문제