【问题标题】:hibernate criteria query self join and get specific columns and count with restrictions休眠条件查询自联接并获取特定列并限制计数
【发布时间】:2013-07-22 00:10:44
【问题描述】:

我在 MySql 中有一张 MonthlySubscriber 表:

CREATE TABLE  MonthlySubscriber (
 MobileNo varchar(20) NOT NULL,
 Month int(11) NOT NULL,
 PRIMARY KEY (MobileNo, Month)
 );

一个手机号码可以在一个多月内多次出现。所以根据手机号,我必须加入我的桌子。

要求:

我想自行加入我的表,并且只希望第一个表中的 MobileNo 和 Month 以及第二个表中的月份。 我想要(第一个表中所有 mobileNo 和月份的计数以及第二个表中的月份)与列中的 order by 和 group by(第一个表中的月份和第二个表中的月份)

MySql 查询:

 Select COUNT(t.MSI), t.Mon1 ,t.Mon2 from
 ( SELECT
     MonthlySubscriber.MobileNo as MSI,
     MonthlySubscriber.Month as Mon1,
     MonthlySubscriber.Month as Mon2
   FROM MonthlySubscriber as MonthlySubscriber
   LEFT JOIN MonthlySubscriber as MonthlySubscriber on
         (MonthlySubscriber.MobileNo = MonthlySubscriber.MobileNo )
   ORDER by MonthlySubscriber.Month
 )
 t GROUP BY t.Mon1, t.Mon2;

我希望在 Hibernate 条件查询中使用完全相同的查询。

例子

表格

> MobileNo  || Month 
> 852335421 || 1 
> 852335421 || 2 
> 852335421 || 5
> 994534554 || 3 
> 924443443 || 4 
> 994534554 || 7
> 864645353 || 1
result should come like this
>count_of_mobileNos || month 1 || month 2
>   2               ||  1       || 1
>   1               ||  1       || 2
>   1               ||  1       || 5
>   1               ||  2       || 2
>   1               ||  2       || 5
>   1               ||  3       || 3
>   1               ||  3       || 7
>   1               ||  4       || 4
>   1               ||  5       || 5
>   1               ||  7       || 7

注意月份是 1-12 的整数

【问题讨论】:

  • 你能提供样本数据吗?请明确您的问题,或者您能否详细说明/向我们展示您想要实现或输出的内容?
  • 抱歉提问方式不好,其实这是我的第一个问题
  • 您正在尝试做的是 pivotal table/query 但如果您创建这样的查询并引用具有 12 个子查询的相同查询,我不这样做'不推荐。

标签: mysql hibernate hibernate-criteria


【解决方案1】:

试试这个:

SELECT count(MobileNo),
count( case when m.Month=1 then m.Month else 0 end ) as Month 1,
count( case when m.Month=2 then m.Month else 0 end ) as Month 2,
count( case when m.Month=3 then m.Month else 0 end ) as Month 3,
.
.
.
count( case when m.Month=12 then m.Month else 0 end ) as Month 12
FROM MonthlySubscriber m
GROUP BY m.Month

【讨论】:

  • 你可以在条件中查询这个查询吗,因为我不知道我们将来必须使用哪个数据库
  • 那将是不同的问题。您必须在休眠标准中向我们提供有关您的 java 类的更多信息。
猜你喜欢
  • 2012-07-22
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2016-05-02
  • 2014-09-24
相关资源
最近更新 更多