0

我正在编写一个数据库查询,它将告诉我哪里有停车位。它只在七月使用。

有一张桌子显示所有空间以及当天是否租用。还有一张桌子,上面有空间和它们的大小。我希望能够选择在所选时间段内的所有日子都可用并具有正确大小的空间。

但是,我遇到了一个问题,只选择给定时间段内可用的空间。这是到目前为止的查询,但它不包含任何有关空间大小的内容,因为我希望这部分首先工作。

  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]”中的语法错误(缺少运算符)

有任何想法吗?

4

1 回答 1

2

首先,您应该重新编写 SQL 查询——它包含太多简单的错误。

这里有几个。

  • 尝试添加一个 ',' 并在查询中进行一些更改:

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

  • 您的子查询C也没有optagetandledlig字段。要解决此问题,请在 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 查询的外观。请注意:仍然缺少字段optagetledligsubquery C

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 + ";

我相信,可能会出现架构或性能问题,但如果没有表格数据,我不能肯定地说。

于 2012-06-06T08:41:21.227 回答