我最近创建了一个订单表和商品表直接的关系 中间用一张关系表来联系
select o.order_id,o.order_num,o.order_time,
case when order_status=-1 then '交易关闭'
when order_status=0 then '已支付'
when order_status=1 then '已发货'
when order_status=2 then '交易完成'
end as order_status,
oi.orderitem_pro_num,
group_concat(p.product_id),
group_concat(p.product_name),
group_concat(p.product_price),
group_concat(p.product_pic),
u.user_username,u.user_address,u.user_telephone
from order_ o
left outer join orderitem oi on o.order_id=oi.order_id
left outer join user u on o.user_id=u.user_id
left outer join product p on oi.product_id=p.product_id
group by order_id
order by order_id desc
并且我用这个语句也查询出了我的订单的信息,订购人的信息和商品的信息,并且用聚合函数把商品的信息合到一起了
但是test测试的时候 product却是null 因为聚合函数里面的数据我不知道怎么分离导致里面的商品取不出来
但是我不用聚合函数的话,比如说我一个订单里有3件商品 数据库就创建了三条记录,
我是有一个分页的效果的 我每页分5条记录 但是这一个订单就占了3条记录
这种情况怎么解决!
下面是我的测试代码
@Test
public void testFindAllOrder(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
OrderService orderService = (OrderService) ac.getBean("orderService");
List<Order> orderList = orderService.findAll();
for (Order order : orderList) {
System.out.println("-------------每个订单的信息-----------------");
System.out.println(order);
List<OrderItem> orderItems = order.getOrderItems();
for (OrderItem orderItem : orderItems) {
System.out.println(orderItem);
}
System.out.println(order.getUser());
}
}
就像下面这样 本来应该是5条订单 但是显示除了6条数据 导致我 分页失败