我正在编写一个数据库查询,它会告诉我哪里有停车位。它仅在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]'
中的语法错误(缺少运算符)
有什么想法吗?
答案 0 :(得分:2)
首先,您应该重新编写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查询的外观。请注意:子查询optaget
中的字段ledlig
和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 + ";
我相信,可能会出现架构或性能问题,但如果没有表格数据,我无法肯定地说出来。