用于访问数据库的 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查询 - 它包含太多简单的错误。
这里有一些。
-
尝试添加","并在查询中进行一些更改:
SELECT C.Plads, SUM(C.optaget), C.ledlig FROM
-
您的子查询
C
也没有optaget
和ledlig
字段。要解决此问题,请在 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
中仍然缺少optaget
和ledlig
字段。
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 + ";
我相信,可能会出现架构或性能问题,但没有表数据,我不能肯定地说。