8

I have the following Query:

query {
  table1(where: {table2: {id: {}}}) {
    id
  }
}

There is a relationship between table1 and table2 via a foreign key. That is, in table2 I have a column named table1_id and so I can access table2 from table1. I want to query all rows from table1 that have no related rows in table2. That is, if I do the following query:

query {
  table1 {
    table2 {
      id
    }
  }
}

I want the rows in table1 where this query returns an empty array. I have tried the following:

query {
  table1(where: {table2: {id: {_in: []}}}) {
    id
  }
}

And

query {
  table1(where: {table2: {id: {_is_null: true}}}) {
    id
  }
}

But nothing seems to work (I get back an empty array). What am I doing wrong?

davidaap
  • 1,569
  • 1
  • 18
  • 43

2 Answers2

12
query {
  table1(where: {_not: { table2: {} } }) {
    id
  }
}

Should work to return the records from table1 that don't have a relationship with table2

Leonardo Alves
  • 1,876
  • 1
  • 16
  • 19
2

The selected answer is actually incorrect. It should be the following:

query {
  table1(where: {_not: { table2: {} } }) {
    id
  }
}

Edit: The selected answer is good now :)

smbl
  • 314
  • 3
  • 13