我已经被伟大的SQL老板打败了,现在正在寻求帮助。
已删除表名中的空格以避免混淆
无论如何,我有两个表Orders和Order Details。我需要从这两个查询几列。到目前为止,我可以很好地查询订单,但是在查询订单明细或同时查询两者时,我会遇到错误。
我的问题是:如何查询两个表? (注意:分号位于底部,想象它在那里)
以下是到目前为止对订单有效的内容:
String queryString = "select `Order Date`, Freight "
+ "from Orders "
+ "where Orders.`Order ID` = ? "
这是我尝试从“订单详细信息”中抓取一列以及要遵循的错误
String queryString = "select Product "
+ "from `Order Details` "
+ "where `Order Details`.`Order ID` = ? "
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.1 user lacks privilege or object not found: ORDER DETAILS.ORDER ID
at net.ucanaccess.jdbc.UcanaccessConnection.prepareStatement(UcanaccessConnection.java:528)
这是我试图同时抓住和遵循的错误
String queryString = "select `Order Date`, Freight, Product "
+ "from Orders, `Order Details` "
+ "where Orders.`Order ID` = ? "
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.1 user lacks privilege or object not found: PRODUCT
at net.ucanaccess.jdbc.UcanaccessConnection.prepareStatement(UcanaccessConnection.java:528)
这是上面的尝试,在底部有一条多余的线将它们组合在一起(我不知道这是怎么做的),但这会改变错误。
String queryString = "select `Order Date`, Freight, Product "
+ "from Orders, `Order Details` "
+ "where Orders.`Order ID` = ? "
+ "and Orders.`Order ID` = `Order Details`.`Order ID`"
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.1 user lacks privilege or object not found: ORDER DETAILS.ORDER ID
at net.ucanaccess.jdbc.UcanaccessConnection.prepareStatement(UcanaccessConnection.java:528)
答案 0 :(得分:0)
在不更改某些配置的情况下,我所知道的任何SQL Server都无法在表名中加引号。
正确的方法是使用[]
:
MSSQL示例:
SELECT * FROM [Order Details]
您的查询可能如下所示:
String queryString = "SELECT Product "
+ "FROM [Order Details] "
+ "WHERE `Order ID` = ? "
但是我建议不要使用任何标识符中的白色空间。
答案 1 :(得分:0)
阅读有关JOIN语句的信息,这将使您可以处理两个表。尝试使用类似“从订单中选择your_columns或加入orderDetails od on.id = od.order_id”之类的方法。 诸如“找不到对象”之类的错误表示您没有创建表格。希望会有所帮助。