根据id查询订单项
java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: 无法绑定由多个部分组成的标识符 "users.id"。 Query: select name,count,price from order_item where order_id=(select order_id from users,orders where users.id=orders.id and user.id=? Parameters: [4]
String sql="select name,count,order_item.price from users left join orders on users.id=orders.id " +
"left join order_item on orders.order_id=order_item.order_id where users.id=? ";
public List<OrderItem> queryOrderItem(int userId) {
// String sql="select name,count,order_item.price from order_item,users,orders where orders.id=users.id " +
// "and orders.order_id=order_item.order_id and users.id=?";
// String sql="select name,count,price from order_item where order_id in " +
// "(select order_id from users,orders where users.id=orders.id and users.id=?)";
// String sql="select name,count,order_item.price from order_item,users,orders where orders.id=users.id " +
// "and orders.order_id=order_item.order_id and users.id=4";
String sql="select name,count,order_item.price from users left join orders on users.id=orders.id " +
"left join order_item on orders.order_id=order_item.order_id where users.id=? ";
return queryForList(OrderItem.class,sql,userId);
//return queryForList(OrderItem.class,sql);
}
}
上面的用了jdbc,druid连接池,queryRunner.上面第一二个sql语句在数据库中试了都没问题,但就是都会报上面的错误,第三个写死了,就可以;
第四个sql语句是没问题的
public class JdbcTest {
public static void main(String[] args) {
Connection conn= Jdbc.getConnection();
// String sql="select name,count,order_item.price from order_item,users,orders where orders.id=users.id " +
// "and orders.order_id=order_item.order_id and users.id=?";
String sql="select name,count,price from order_item where order_id in " +
"(select order_id from users,orders where users.id=orders.id and users.id=?)";
try {
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1,4);
ResultSet resultSet = preparedStatement.executeQuery();
System.out.println(resultSet);
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
就普通的只用了jdbc,上面四个sql语句都可以,不知道为什么,
不知道是因为druid连接池的问题还是queryRunner 的问题