$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数据库。
非常感谢你的帮助。
答案 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
比你的帮助