访问查询错误(“from子句中的语法错误”)

时间:2013-09-23 19:51:35

标签: sql ms-access ms-access-2007

$consulta3 = "SELECT * FROM Dept INNER JOIN Userinfo INNER JOIN Checkinout
                     on Dept.DeptName = '$departamento'
                     where Dept.Deptid = Userinfo.Deptid AND Userinfo.Name = Checkinout.name";

我试图用这个查询做的事情是:我有一个名为Dept的表,它有所有的deparments名称和id,用户信息有用户名,部门ID和id。另外,我有一个叫做checkinout的第3个表,它有一个用户ID,有时间。

所以我想(使用deparment的名字)从Checkinout表中获取属于该deparment的人的所有数据,但当我尝试该查询时,它给了我一个错误:

syntax error in from clause. sql state 37000 in sqlexecdirect

我无法解决它。我使用的是Acces数据库。

非常感谢你的帮助。

5 个答案:

答案 0 :(得分:2)

访问绝对需要包含多个连接的任何查询的FROM子句中的括号。如果您有Access可用,请在查询设计器中创建并测试新查询。设计人员有用的原因之一是它知道保持数据库引擎满意的括号规则。

从类似于此的查询开始。此时不要担心基于Dept.DeptName的过滤。只需确保连接设置正确。

SELECT *
FROM
    (Dept
    INNER JOIN Userinfo
    ON Dept.Deptid = Userinfo.Deptid)
    INNER JOIN Checkinout
    ON Userinfo.Name = Checkinout.name

正确设置连接后,添加过滤器约束(WHERE Dept.DeptName ...)。

答案 1 :(得分:0)

我认为应该是:

SELECT * FROM (Dept 
INNER JOIN Userinfo ON (Dept.Deptid = Userinfo.Deptid)) 
INNER JOIN Checkinout ON (Userinfo.Name = Checkinout.name)
WHERE Dept.DeptName = '$departamento'

答案 2 :(得分:0)

您已撤消内部联接和where子句。 您应该像这样编写SQL:

SELECT * 
  FROM Dept 
 INNER JOIN Userinfo ON Dept.Deptid = Userinfo.Deptid
 INNER JOIN Checkinout ON Userinfo.Name = Checkinout.name"
 WHERE Dept.DeptName = '$departamento'

答案 3 :(得分:0)

可能应该是:

SELECT * FROM Dept 
INNER JOIN Userinfo ON Dept.Deptid = Userinfo.Deptid 
INNER JOIN Checkinout on Userinfo.Name = Checkinout.name 
where Dept.DeptName = '$departamento' 

答案 4 :(得分:0)

我决定做的是使用2个不同的查询:

$consulta=  "SELECT * FROM Dept INNER JOIN Userinfo 
         ON Userinfo.Deptid = Dept.Deptid
         where Dept.DeptName = '$departamento'";

$consulta2 = "SELECT  *  FROM Checkinout, Userinfo
    where Checkinout.Userid = '$userid' AND  Userinfo.userid = '$userid' AND 
    Checkinout.Checktime BETWEEN CDate('$fecha1') AND CDate('$fecha2')"; 

第一个选择属于一个部门的所有人,第二个选择一个人的所有IN和OUT。在一段时间内能够查看第一个结果的每个寄存器并检查其他查询


仍然有搜索问题,它不能正常工作,我试图做一个完整的查询,它同时在3个表中搜索,但它给我一个错误:

$toda_consulta= "SELECT * 
                     FROM Dept 
                     INNER JOIN Userinfo ON (Dept.Deptid = Userinfo.Deptid)
                     INNER JOIN Checkinout ON (Checkinout.Userid = Userinfo.Userid)
                     WHERE Dept.DeptName = '$departamento' AND 
                           Checkinout.Checktime BETWEEN CDate('$fecha_inicio') AND CDate('$fecha_fin')";

错误:Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Controlador ODBC Microsoft Access] sintax error (missing operator) in the expression '(Dept.Deptid = Userinfo.Deptid) INNER JOIN Checkinout ON (Checkinout.Userid = Userinfo.Userid)'., SQL state 37000 in SQLExecDirect in C:\wamp\www\casa 7-9-13\calcula_departamento1.php on line 51

比你的帮助