【问题标题】:Order by selected tables field from other table field, hibernate or simple sql按从其他表字段中选择的表字段排序,休眠或简单的 sql
【发布时间】:2014-11-20 07:11:28
【问题描述】:

我有 3 张桌子。我的桌子是

PRODUCT ( pro_id, name , api )
Definition ( def_id, name )
Product_details ( id, pro_id, def_id, value )

pro_id 和 def_id 是表 product 和 definiton 的外键。

我的表格记录是这样的

Product ( 1, Goal , A01 ) , ( 2 Shampoo, A01 ) , ( 3, Cell, A02 )
Definition ( 1, Effect ) , ( 2, Satisfaction ) , ( 3, total )
Product_details ( 1, 1, 1, 5 ) , ( 2, 1 , 2, 1 ), ( 3, 1, 3, 3 ) ( 4, 2, 3, 2 )

我想选择 API = "A01" 的产品并按 product_details 值排序

解决方案应该是目标,洗发水。

我尝试了很多东西,但我无法得到我想要的,

我正在使用 jsf,hibernate,我无法编写 hibernate 查询,因为我仍然无法使用 sql,有人可以帮助我使用 sql 脚本或 hibernate 脚本。

【问题讨论】:

  • 您在Product_details 表中对应prod_id = 1 有3 行不同的value。在这种情况下,value 应考虑为 order by
  • 最后一个因为,3 表示定义表中的总数。 ( 3, 1, 3, 3) 第一个字段 "id" 第二个 "product_id" 第三个 "total" 在定义表中,最后一个是值
  • 具体来说,最后一个是哪个顺序?是max(id) 还是max(value) 还是min(id) 还是min(value)
  • 应该是按最大值(值)排序的,请见谅

标签: sql oracle hibernate


【解决方案1】:

试试这个:

SELECT p.name
FROM   Product p
       JOIN (SELECT pro_id,
                    Max(value) AS value
             FROM   Product_details
             GROUP  BY pro_id) pd
         ON p.pro_id = pd.pro_id
ORDER  BY pd.value 

【讨论】:

  • 你有什么意见我如何用休眠实现它?
  • 对不起伙计,我对hibernate一无所知,这是给oracle的。
【解决方案2】:
select pr.pro_id,pr.name,pr.api 
from 
(select pro_id,name,api from product) pr,
(select pro_id,max(value) from product_details
group by pro_id) pd
where pd.pro_id=pr.pro_id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2012-10-16
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多