我有个产品表叫product,还有个供货商表,叫sub,产品表对供货商是一对多,现在我在页面遍历所有产品的同时,想把供货商表里id最大的并且“中标”的供货商里的属性:采购价 也显示到页面上,请问大家怎么使用hql语句查询?
表结构:    
    product:id,name,供货商的集合:subs      
    sub:id,product,price,是否中标
页面要遍历的是:所有product,字段是:
    id   产品名  供货商价格求求各位想想办法,谢谢大家。

解决方案 »

  1.   

    select distinct Sub as s from Product as p where p.is = :is order by s.id desc然后分页取得第一跳记录。你看看这样行不行。 我假设你的"是否中标"的field叫is
      

  2.   

    谢谢,但是如果有一件商品没人投标的话,那件商品不就不会显示出来了么?我觉得遍历还是得from产品表吧?
      

  3.   

    select distinct Sub as s from Product as p where p.is = :is order by s.id desc遍历的是产品表呀 。
      

  4.   

    1对多 是否加上right join更好点! “distinct ” 效率低吧 加入10W条 查询某产品要在这10W个里面检索一遍 。
      

  5.   

    哦,谢谢大家,因为产品名称是唯一的,所以估计就不用加distinct了吧?
      

  6.   

    select a.pid,a.pname,a.price,a.sid from (select product.pid,product.pname,sub.sid,sub.price from product,sub where product.pid=sub.pid order by sub.sid desc)a group by a.pid这样写为什么会报错?
    说是group by用得不对?
      

  7.   

    应用group by 在select中的字段都必须是函数!不然就会报错
      

  8.   

    我上边那个剧sql语句应该如何改啊?!!!
      

  9.   

    上边那句sql总报"not a GROUP BY expression"的错,这是怎么回事?