# QueryBuilder search for multiple with\_incoming

**URL:** <https://aiida.discourse.group/t/querybuilder-search-for-multiple-with-incoming/616>\
**Category:** General Usage\
**Created:** [May 27, 2025, 2:10pm UTC](https://aiida.discourse.group/t/querybuilder-search-for-multiple-with-incoming/616 "2025-05-27T14:10:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![simonpintarelli](https://yyz2.discourse-cdn.com/free1/user_avatar/aiida.discourse.group/simonpintarelli/32/53_2.png) [@simonpintarelli](https://aiida.discourse.group/u/simonpintarelli)\
**Post date:** [May 27, 2025, 2:10pm UTC](https://aiida.discourse.group/t/querybuilder-search-for-multiple-with-incoming/616/1 "2025-05-27T14:10:08Z")

</div>

Is it possible to filter for multiple conditions in `with_incoming`?  
For example, I’d like to extend the following query to consider CalcJobNodes that have been produced by a given code using a given structure as input:

```python
qb = QueryBuilder()
#code = Code.get_from_string('qe-sirius@daint')
#qb.append(Code, filters={'uuid': code.uuid}, tag='code')
qb.append(StructureData, filters={'uuid': 'c81a5945-7872-479e-9624-cfb5ecf48dea'}, tag='structure')
qb.append(CalcJobNode, with_incoming='structure', tag='calc')
# this doesn't work
#qb.append(CalcJobNode, with_incoming=['structure', 'code'], tag='code')
qb.add_projection('calc', ['id', 'pk', 'uuid', 'ctime', 'attributes.exit_status'])

```

---

<div class="post-metadata">

**Author:** ![t-reents](https://yyz2.discourse-cdn.com/free1/user_avatar/aiida.discourse.group/t-reents/32/82_2.png) [@t-reents](https://aiida.discourse.group/u/t-reents)\
**Post date:** [May 27, 2025, 4:52pm UTC](https://aiida.discourse.group/t/querybuilder-search-for-multiple-with-incoming/616/2 "2025-05-27T16:52:43Z")

</div>

Hi @simonpintarelli

I think it works if you combine `with_incoming` at the `CalcJob` level and `with_outgoing` at the `Code` level:

```auto
q = QueryBuilder()
q.append(orm.StructureData, filters={'id': 907076}, tag='strct')
q.append(CalcJobNode, with_incoming='strct', tag='calc', project='*')
q.append(Code, filters={'id': 8566}, with_outgoing='calc')
q.all()

```

Hope that helps!

And let me know if it doesn’t work for you.

---

<div class="post-metadata">

**Author:** ![simonpintarelli](https://yyz2.discourse-cdn.com/free1/user_avatar/aiida.discourse.group/simonpintarelli/32/53_2.png) [@simonpintarelli](https://aiida.discourse.group/u/simonpintarelli)\
**Post date:** [May 27, 2025, 5:08pm UTC](https://aiida.discourse.group/t/querybuilder-search-for-multiple-with-incoming/616/3 "2025-05-27T17:08:04Z")

</div>

Hi Timo,

thanks a lot! This worked.
