SQL Query访问数据库

时间:2012-06-06 08:36:16

标签: c# sql

我正在编写一个数据库查询,它会告诉我哪里有停车位。它仅在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]'

中的语法错误(缺少运算符)

有什么想法吗?

1 个答案:

答案 0 :(得分: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查询的外观。请注意:子查询optaget中的字段ledligC仍然缺失。

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

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