利用queryRunner根据用户的id三表连接查询查询订单项

根据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 的问题

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值