Mijn vraag
...
Ik wil graag de INTERSECT van twee queries hebben, maar als één van de twee geen resultaten bevat wil ik de set die wel gedefinieerd is als resultaat.
Het lijkt zo makkelijk maar ik kom er niet uit
.
Relevante software en hardware die ik gebruik
...
Postgres
Wat ik al gevonden of geprobeerd heb
...
Authors:
id | name | city
1 | John | New York
Books
id | title | genre | author_id
1 | Full Text Search | Education | 1
Als een boek dus een match heeft met een bepaalde schrijver wil ik alleen die als resultaat. Is er geen match dan wil ik of alle boeken, of alle schrijvers.
...
Ik wil graag de INTERSECT van twee queries hebben, maar als één van de twee geen resultaten bevat wil ik de set die wel gedefinieerd is als resultaat.
Het lijkt zo makkelijk maar ik kom er niet uit

Relevante software en hardware die ik gebruik
...
Postgres
Wat ik al gevonden of geprobeerd heb
...
Authors:
id | name | city
1 | John | New York
Books
id | title | genre | author_id
1 | Full Text Search | Education | 1
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| with main as ( select b.id, b.author_id, b.title, b.genre from books b inner join authors a on b.author_id = a.id where b.fulltext @@ to_tsquery( 'english', 'John | Full | Text | Educative' ) ), relation as ( select b.id, b.author_id, b.title, b.genre from books b inner join authors a on b.author_id = a.id where a.fulltext @@ to_tsquery( 'english', 'John | Full | Text | Educative' ) ) select * from main intersect select * from relation; |
Als een boek dus een match heeft met een bepaalde schrijver wil ik alleen die als resultaat. Is er geen match dan wil ik of alle boeken, of alle schrijvers.