用于访问数据库的 SQL 查询

本文关键字:SQL 查询 数据库 访问 用于 | 更新日期: 2023-09-27 18:36:19

我正在编写一个数据库查询,它将向我显示哪里有停车位。它仅在7月使用。

有一张桌子显示所有空间以及当天是否租用。还有另一个表包含空格及其大小。我希望能够选择所选时间段内所有日期都可用的空间,并且具有正确的大小。

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

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

有什么想法吗?

用于访问数据库的 SQL 查询

首先,您应该重新设计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 + ";

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