我在我的应用程序中使用queryDsl进行复杂的搜索查询。我是querydsl的新手。我已经开始使用以下代码从一个表中获取几行(TableA)。 但是我必须在其他一些表(TableB)中找到具有相同id的人(Count)列表
public static Predicate find(final Long pId)
QPerson qPerson = QPerson.person;
Predicate predicate;
BooleanBuilder booleanBuilder = new BooleanBuilder();
if (pId != null) {
booleanBuilder.or(qPerson.person_no.eq(pId));
}
if (name != null && !name.isEmpty()) {
booleanBuilder.or(qPerson.expiry_dt.eq(name));
}
predicate = booleanBuilder.getValue();
return predicate;
}
表A:
pId name
1001 sampleNameA
1002 sampleNameB
1003 sampleNameC
表B:
pId name interests
1001 sampleNameA music
1001 sampleNameA dance
1001 sampleNameA coding
1003 sampleNameC music
1002 sampleNameB dance
1002 sampleNameB coding
我需要使用以下查询获得这样的输出
从master_person_table tableA中选择cnt cnt,tableA。*,(从tableB中选择count(*)cnt WHERE pId ='1002')cnt 在哪里pId ='1002'
输出:
count pId name
2 1002 sampleNameB
我需要在HTML中显示行数(对于id = 1002)。
任何人都可以帮我找到从tableB获取的pId的计数
提前致谢
答案 0 :(得分:0)
请尝试以下查询: -
1.对于多个pIds: -
SELECT COUNT(*) AS COUNT, pId, name FROM TableB GROUP BY pId
2.仅对选定的pId: -
SELECT COUNT(*) AS COUNT, pId, name FROM TableB WHERE pId = 1002
如果你需要更多帮助,请告诉我。