#1 Wed 13 October 2021 14:10
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
condition clause where
Bonjour,
j'ai une table avec plusieurs champs integer comportants chacun une année : an_deb_chantier et an_control.
je cherche à faire une selection toute basique des chantiers ayant débuter avant 2015 donc les inspections ont été réalisées après cette date ET ou l'on possède bien une date de début de chantier.
j'ai donc :
Code:
SELECT * FROM chantier WHERE an_deb_chantier is not null AND an_deb_chantier < 2015 AND an_control > 2015
et en retour je recois bien un résultat mais qui me retourne des an_deb_chantier qui sont null, supérieure ou inférieur à 2015. Bref pas du tout le retour attendu.
(j'arrive à filtrer en utilisant des CTE mais bon je pense qu'il y'a plus simple).
Est-ce-que c'est possible sans passer par une cte de définir une hierarchie des conditions ?
Hors ligne
#2 Wed 13 October 2021 15:51
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1159
Re: condition clause where
Salut,
etes vous sûr que la requête que vous avez posté est bien celle que vous avez lancé ?
Celle-ci me parait correcte, à part que le test de nullité est inutile (c'est possible que postgres ré-écrive la requête avant de l'executer).
Est-ce-que c'est possible sans passer par une cte de définir une hierarchie des conditions ?
Il n'y a pas de hiérarchie dans ce que vous désirez faire, toutes les conditions doivent être satisfaites.
Pouvez poster la cte qui marche ?
Hors ligne
#3 Mon 18 October 2021 16:59
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Re: condition clause where
Salut,
etes vous sûr que la requête que vous avez posté est bien celle que vous avez lancé ?
Celle-ci me parait correcte, à part que le test de nullité est inutile (c'est possible que postgres ré-écrive la requête avant de l'executer).Est-ce-que c'est possible sans passer par une cte de définir une hierarchie des conditions ?
Il n'y a pas de hiérarchie dans ce que vous désirez faire, toutes les conditions doivent être satisfaites.
Pouvez poster la cte qui marche ?
La CTE décompose juste la clause where :
Code:
with test as ( select * from chantier WHERE an_deb_chantier is not null ) select * from test where an_deb_chantier < 2015 AND an_control > 2015;
Bon du coup j'ai continué avec des cte
Hors ligne
#4 Mon 18 October 2021 21:27
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1159
Re: condition clause where
Quelle version de postgresql ?
sur une 9.6 pas de problème :
http://sqlfiddle.com/#!17/9dad8/7
Hors ligne