2012-06-06 79 views
0

我正在寫一個數據庫查詢,它會告訴我哪裏有停車位。它僅在七月份使用。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(SELECT Plads FROM OptagetPladser AS A Inner JOINBådpladseras B ON A.plads = B.Pladsnummer WHERE(A.dato> =「+ Startdato +」and A.dato <=「+ Slutdato +」)和(a。)))作爲C GROUP BY Plads HAVING SUM(optaget)> =「+ diffResult +」) – DavyGravy

+0

好的,但你仍然有一些拼寫錯誤和語法錯誤。另外,「C.optaget」字段在哪裏?我假設,子查詢'C'不會給你一個非0的'optaget'值,因爲這個條件:'AND(a.optaget = 0)'。更多地說:你只從子查詢中檢索「Plads」字段,爲什麼這樣呢?我想,你應該重寫你的查詢。 ' – gahcep

+0

你可以給一個詳細的表格描述,你能給一個表格名稱的英文翻譯嗎? – gahcep