Mysql 如何使用查询DSL连接表
我在应用程序中使用queryDsl进行复杂的搜索查询。我是querydsl的新手。我从下面的代码开始,从一个表中提取几行。 但我必须在其他一些表格B中找到具有相同id的个人帐户列表Mysql 如何使用查询DSL连接表,mysql,jpa,querydsl,predicates,Mysql,Jpa,Querydsl,Predicates,我在应用程序中使用queryDsl进行复杂的搜索查询。我是querydsl的新手。我从下面的代码开始,从一个表中提取几行。 但我必须在其他一些表格B中找到具有相同id的个人帐户列表 public static Predicate find(final Long pId) QPerson qPerson = QPerson.person; Predicate predicate; BooleanBuilder booleanBuilder = new BooleanBui
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
我需要通过下面的查询获得这样的输出
选择cnt cnt,表格A.*从主表格A中选择count*cnt from tableB,其中pId='1002'cnt
其中pId='1002'
输出:
count pId name
2 1002 sampleNameB
我需要在HTML中显示id=1002的行数
有人能帮我找到从表B中提取的pId的计数吗
提前感谢请尝试以下查询:- 1.对于多个PID:-
SELECT COUNT(*) AS COUNT, pId, name FROM TableB GROUP BY pId
2.仅针对选定的pId:-
SELECT COUNT(*) AS COUNT, pId, name FROM TableB WHERE pId = 1002
如果您需要更多帮助,请告诉我。您可以粘贴输出吗。这样我们就可以帮助你构建查询了。@Timo Westkämper。我已经编辑了这个问题。谢谢。如果我们看表2,那么舞蹈的pId 1002的计数是1,编码也是一样的。在输出中,你可以算作2。您希望计数为1或2。你能给我们提供更多的细节,以便我能帮助你。问候。@Pankaj谢谢您的回复。我需要使用queryDSL构建查询。我希望计数实际上是id='1002'的计数。我的sql查询的WHERE条件为id=1002。我需要根据id列而不是兴趣列获取计数。我编辑了我想要的输出。您想要只输出选定的Id还是要输出多个Id?谢谢您的回答。但我需要按照我的请求使用QueryDSL构建查询。我需要为下面的一个组成一个queryDSL查询:选择cnt cnt,tableA.*从master_person_table tableA中,选择count*cnt from tableB,其中pId='1002'cnt,其中pId='1002'可以使用Q生成的类、谓词或布尔生成器来完成。这样,我只使用一个表形成了一个基本查询,并给出了结果。但是我需要帮助来连接多个表。在我的查询中,我可以将单个id或id列表从TableA的结果传递到TableB,我只需要计算TableB中这些id的数量。两个表中的列名称PID相同。你能帮我建立一个QueryDSL查询吗。