使用Java查询数据库中的两个表

时间:2018-10-01 18:04:43

标签: java sql database

我已经被伟大的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)

2 个答案:

答案 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”之类的方法。 诸如“找不到对象”之类的错误表示您没有创建表格。希望会有所帮助。