MySql に MonthlySubscriber のテーブルが 1 つあります。
CREATE TABLE MonthlySubscriber (
MobileNo varchar(20) NOT NULL,
Month int(11) NOT NULL,
PRIMARY KEY (MobileNo, Month)
);
1 つのモバイル番号は、1 か月以上に複数回来ることはできません。モバイルによると、テーブルに参加する必要はありません。
要件:
私は自分のテーブルに自分で参加したいのですが、最初のテーブルからは MobileNo と Month のみ、2 番目のテーブルからは月だけが必要です。両方の列 (最初のテーブルの月と 2 番目のテーブルの月) の順序とグループ化を使用して (最初のテーブルのすべての mobileNo と月と 2 番目のテーブルの月の数) が必要です。
私の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 の整数であることに注意してください