Ik heb een query die ik graag zou willen inverteren. Hiermee bedoel ik dat ik de resultaten wil vinden die niet overeenkomen met de conditie (i.p.v. wel).
Dit is de query:
Mijn poging om de query te inverteren is als volgt, maar het probleem is dat deze gebruik maakt van een correlated subquery:
Zou het mogelijk zijn deze query op een ander manier te inverteren zonder gebruik te maken van een correlated subquery?
Dit is de query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| SELECT card.id FROM card INNER JOIN card_effect card_effect1 ON card.id = card_effect1.card_id INNER JOIN card_effect_type card_effect_type1 ON card_effect1.type_id = card_effect_type1.id INNER JOIN card_effect card_effect2 ON card.id = card_effect2.card_id INNER JOIN card_effect_type card_effect_type2 ON card_effect2.type_id = card_effect_type2.id WHERE card_effect_type1.name = 'Ability' AND card_effect_type2.name = 'Ancient Trait' GROUP BY card.id LIMIT 24 |
Mijn poging om de query te inverteren is als volgt, maar het probleem is dat deze gebruik maakt van een correlated subquery:
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
| SELECT card.id FROM card card WHERE NOT( EXISTS( SELECT 1 FROM card sub_card INNER JOIN card_effect card_effect1 ON sub_card.id = card_effect1.card_id INNER JOIN card_effect_type card_effect_type1 ON card_effect1.type_id = card_effect_type1.id INNER JOIN card_effect card_effect2 ON sub_card.id = card_effect2.card_id INNER JOIN card_effect_type card_effect_type2 ON card_effect2.type_id = card_effect_type2.id WHERE sub_card.id = card.id AND card_effect_type1.name = 'Ability' AND card_effect_type2.name = 'Ancient Trait' ) ) GROUP BY card.id LIMIT 24 |
Zou het mogelijk zijn deze query op een ander manier te inverteren zonder gebruik te maken van een correlated subquery?