【发布时间】:2014-08-04 13:09:54
【问题描述】:
我有一组列和表,在各自的下拉列表中,我正在编写代码以根据表列选择生成动态 SQL
它适用于简单的 Select 语句,但在多重连接的情况下,我试图找出处理右连接和左连接的语法。
请帮忙..这是 SQL 语法错误
1)
(Select dbo.Employee.Dept_ID,dbo.Employee.Emp_ID,dbo.Employee.Emp_Name,dbo.Employee_DataVal.DeptNo,
dbo.Employee_DataVal.EmpName,dbo.Employee_DataVal.EmpNo,dbo.Employee_DataVal.Salary,dbo.Emp_Sal.Emp_ID,dbo.Emp_Sal.Salary
FROM Employee
INNER JOIN Employee_DataVal
ON Employee.Dept_ID = Employee_DataVal.DeptNo
OR Employee_DataVal.EmpName = Employee.Emp_Name)
LEFT JOIN Emp_Sal
ON Employee.Emp_ID = Emp_Sal.Emp_ID
Incorrect syntax near the keyword 'LEFT'.
2)Select dbo.Employee.Dept_ID,dbo.Employee.Emp_ID,
dbo.Employee.Emp_Name,dbo.Employee_DataVal.DeptNo,
dbo.Employee_DataVal.EmpName,dbo.Employee_DataVal.EmpNo
,dbo.Emp_Sal.Emp_ID,dbo.Emp_Sal.Salary
FROM Employee INNER JOIN Employee_DataVal
ON Employee.Emp_ID = Employee_DataVal.EmpNo
AND Employee.Dept_ID = Employee_DataVal.DeptNo
LEFT JOIN Employee
ON Employee_DataVal.EmpName = Employee.Emp_Name
The objects "Employee" and "Employee" in the FROM clause have the same exposed names. Use correlation names to distinguish them.
PS:在 SQL server 上运行这个 sql
【问题讨论】:
-
按照错误说的做 :-) 给你 db 一个临时名称,所以这个 FROM Employee INNER JOIN Employee_DataVal 变成 FROM Employee e INNER JOIN Employee_DataVal,然后只需在你的字段前加上前缀
-
感谢您的快速响应,正如我所提到的,我必须构建一个动态查询,所以如果用户在不同的表 XTable 之间从 UI 添加右连接,那么我应该如何继续?语法明智并且在 java 中也以编程方式?
标签: java sql sql-server database