我是SQL的新手,并且一直试图在MS Access中使用SQL查询来使用下面的sql连接多个表。这是为了进行访问测试。
用粗体
解释了我打算实现的目标SELECT
Table1.Role,
Table1.Object,
表1是具有角色,授权对象
的基表Table2.Role,
Table2.User_Name,
表2的用户已映射到角色
Table3.Org_Level_Desp,
Table3.Org_LEvel_Values_1,
表3包含组织级别的控制,这决定了用户可以访问的公司或工厂
Table4.Role_Description,
表4包含表1中提到的角色的角色描述
Table5.Full_Name,
Table5.Department,
表5包含用户名和部门。公共字段是表2中的用户名
FROM
Table1
RIGHT JOIN Table2 ON Table1.Role=Table2.Role
RIGHT JOIN Table3 ON Table1.Role=Table3.Role
RIGHT JOIN Table4 ON Table1.Role=Table4.rOLE
将表2,表3和表4中所需的表格加入表1
FROM
Table2
RIGHT JOIN Table5 ON Table2.USER_NAME=Table5.USer
将表格5中的所需表格加入表格
我收到上述查询的多个语法错误。我想我缺少基本的东西 - 任何人都可以帮忙吗?
谢谢! 乌代
似乎我无法在评论中添加更多内容。对不起,下面是我更新的代码,仍然得到相同的错误。你能告诉我吗?
SELECT
TABLE1.Role,
TABLE1.Object,
TABLE1.Field_name,
TABLE1.Value,
TABLE1.[and],
TABLE1.ID_whether_object_is_deleted,
TABLE2.Role,
TABLE2.User_Name,
TABLE2.End_date,
TABLE3.Org_Level_Control,
TABLE3.Org_LEvel_Values_1,
TABLE3.Org_LEvel_Values_2,
Table4.Role_Description,
TABLE6.Field_Short_Description,
TABLE7.Object_Level_Desp,
TABLE8.Auth_Obj_Text,
TABLE5.Full_Name,
TABLE5.Department,
TABLE9.Valid_to,
TABLE9.Lock,
from ((((((TABLE1 INNER JOIN TABLE2 ON TABLE1.Role=TABLE2.Role)
INNER JOIN TABLE3 ON TABLE1.Role=TABLE3.Role)
INNER JOIN Table4 ON TABLE1.Role=Table4.role)
INNER JOIN TABLE6 ON TABLE1.Field_Name=TABLE6.Field_Name)
INNER JOIN TABLE7 ON TABLE1.[Object]=TABLE7.Org_Object)
INNER JOIN TABLE8 ON AGR_TABLE1.Field_name=TABLE8.Field_Name)
FROM
(TABLE2 INNER JOIN TABLE5 ON TABLE2.USER_NAME=TABLE5.[USer])
INNER JOIN TABLE9 ON TABLE2.USER_NAME=TABLE9.[User]);
下面是我更新的代码,仍然得到相同的错误。你能告诉我吗?
SELECT
TABLE1.Role,
TABLE1.Object,
TABLE1.Field_name,
TABLE1.Value,
TABLE1.[and],
TABLE1.ID_whether_object_is_deleted,
TABLE2.Role,
TABLE2.User_Name,
TABLE2.End_date,
TABLE3.Org_Level_Control,
TABLE3.Org_LEvel_Values_1,
TABLE3.Org_LEvel_Values_2,
Table4.Role_Description,
TABLE6.Field_Short_Description,
TABLE7.Object_Level_Desp,
TABLE8.Auth_Obj_Text,
TABLE5.Full_Name,
TABLE5.Department,
TABLE9.Valid_to,
TABLE9.Lock,
from ((((((TABLE1 INNER JOIN TABLE2 ON TABLE1.Role=TABLE2.Role)
INNER JOIN TABLE3 ON TABLE1.Role=TABLE3.Role)
INNER JOIN Table4 ON TABLE1.Role=Table4.role)
INNER JOIN TABLE6 ON TABLE1.Field_Name=TABLE6.Field_Name)
INNER JOIN TABLE7 ON TABLE1.[Object]=TABLE7.Org_Object)
INNER JOIN TABLE8 ON AGR_TABLE1.Field_name=TABLE8.Field_Name)
答案 0 :(得分:1)
我不知道你为什么要RIGHT JOIN
,特别是如果你正在学习SQL。从INNER JOIN
开始。如果这是遗漏行,请转到LEFT JOIN
。
MS Access中的语法使用括号:
SELECT . . .
FROM (((Table1 INNER JOIN
Table2
ON Table1.Role = Table2.Role
) INNER JOIN
Table3
ON Table1.Role = Table3.Role
) INNER JOIN
Table4
ON Table1.Role = Table4.rOLE
) INNER JOIN
Table5
ON Table2.USER_NAME = Table5.USer
然后,您可以在SELECT
中选择所需的列。
请注意,在任何其他数据库中,括号看起来都很尴尬。
答案 1 :(得分:1)
Re:您更新的SQL。
int questionId=getIntent().getExtras().getInt("questionId");
是reserved word in Access SQL,因此可能是foreach ($files as $file) {
$files->saveAs(Yii::getPathOfAlias('webroot').'/upload/'.$fileName);
}
之类的其他人。将这些放入SELECT和FROM子句中的[方括号]中。
你的SELECT子句末尾有一个无关的逗号:
Value