2012-06-06 55 views
0

我正在写一个数据库查询,它会告诉我哪里有停车位。它仅在七月份使用。SQL查询访问数据库

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

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

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

在SUM()表达式中用()替换[] – Arvo

+1

哪个数据库? SQL Server,Oracle,MySQL ...? – Fionnuala

+0

再一次,这是MS Access? SQL因版本而异。 – Fionnuala

回答

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查询应该是什么样子。请注意:子查询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 + "; 

我相信,有可能出现建筑或性能问题,但没有表的数据我不能说这是肯定的。

+0

SELECT C.Plads,SUM(C.optaget)FROM(SELECT Plads FROM OptagetPladser AS A Inner JOINBådpladseras B ON A.plads = B.Pladsnummer WHERE(A.dato> =“+ Startdato +”and A.dato <=“+ Slutdato +”)和(a。)))作为C GROUP BY Plads HAVING SUM(optaget)> =“+ diffResult +”) – DavyGravy

+0

好的,但你仍然有一些拼写错误和语法错误。另外,“C.optaget”字段在哪里?我假设,子查询'C'不会给你一个非0的'optaget'值,因为这个条件:'AND(a.optaget = 0)'。更多地说:你只从子查询中检索“Plads”字段,为什么这样呢?我想,你应该重写你的查询。 ' – gahcep

+0

你可以给一个详细的表格描述,你能给一个表格名称的英文翻译吗? – gahcep