Mysql 如何使用查询DSL连接表

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

我在应用程序中使用queryDsl进行复杂的搜索查询。我是querydsl的新手。我从下面的代码开始,从一个表中提取几行。 但我必须在其他一些表格B中找到具有相同id的个人帐户列表

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查询吗。