PostGreSQL SELECT * WHERE
Résolu
Leinox
Messages postés
227
Date d'inscription
Statut
Membre
Dernière intervention
-
Leinox Messages postés 227 Date d'inscription Statut Membre Dernière intervention -
Leinox Messages postés 227 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai un problème très étrange avec une requête sur une base de données PostGreSQL.
Lorsque j'effectue la requête suivante :
J'obtiens bien les résultats qui sont dans ma base de données.
Par contre lorsque je modifie mon filtre sur customer_id pour qu'il soit égale à 6, je n'ai plus aucun résultat.
J'exécute mes requêtes sur le système de Query de PgAdmin, et j'ai vérifié que j'avais bien au moins une ligne dans la table contenant
Je ne comprend pas... Avez vous une suggestion ?
Lorsque j'effectue la requête suivante :
SELECT * FROM prod_purchase_order WHERE (part_number_part_id = 1 AND customer_id = 2) AND (customer_order_number NOT LIKE 'WIP%' OR starchip_order_num NOT LIKE 'WIP%');
J'obtiens bien les résultats qui sont dans ma base de données.
Par contre lorsque je modifie mon filtre sur customer_id pour qu'il soit égale à 6, je n'ai plus aucun résultat.
J'exécute mes requêtes sur le système de Query de PgAdmin, et j'ai vérifié que j'avais bien au moins une ligne dans la table contenant
part_number_part_id = 1 AND customer_id = 6
Je ne comprend pas... Avez vous une suggestion ?
A voir également:
- PostGreSQL SELECT * WHERE
- Where is it - Télécharger - Gestion de fichiers
- Please select boot device - Forum Windows 7
- Reboot and select proper boot device - Forum Windows
- Select boot mode android - Guide
- Reboot and select proper boot device or insert boot media in selected boot device and press a key ✓ - Forum PC portable
4 réponses
Bonjour
Ce que je ne comprends pas, c'est que tu nous présentes une requête avec une condition c1 AND c2 AND (c3 or c4) et que tu parles de vérification avec c1 AND c2 seulement.
As-tu essayé la requête complète avec PgAdmin ?
Ce que je ne comprends pas, c'est que tu nous présentes une requête avec une condition c1 AND c2 AND (c3 or c4) et que tu parles de vérification avec c1 AND c2 seulement.
As-tu essayé la requête complète avec PgAdmin ?
Bonjour le père, merci de ton intérêt.
Le but de ma requête est de me retourner toutes les lignes là où C1 et C2 ont des valeurs précises. Et si C3 ou C4 existe, je ne veux pas les lignes où ses lignes commence par 'WIP'.
Il arrive que C3 n'ai pas de valeur, ou bien c'est C4, ou bien aucune des deux.
J'exécute ces deux requêtes dans PgAdmin. J'ai essayé avec et sans ma condition sur C3 et C4. Même résultat.
Le but de ma requête est de me retourner toutes les lignes là où C1 et C2 ont des valeurs précises. Et si C3 ou C4 existe, je ne veux pas les lignes où ses lignes commence par 'WIP'.
Il arrive que C3 n'ai pas de valeur, ou bien c'est C4, ou bien aucune des deux.
J'exécute ces deux requêtes dans PgAdmin. J'ai essayé avec et sans ma condition sur C3 et C4. Même résultat.
Soyons clairs : tu dis bien que
ne te retourne aucun résultat alors que tu as des lignes contenant
Tes champs part_number_part_id et customer_id sont-ils bien de type numérique ?
SELECT * FROM prod_purchase_order WHERE (part_number_part_id = 1 AND customer_id = 6)
ne te retourne aucun résultat alors que tu as des lignes contenant
part_number_part_id = 1 AND customer_id = 6?
Tes champs part_number_part_id et customer_id sont-ils bien de type numérique ?
Ouf ! Ca fonctionne !
Merci le père tu m'a aiguillé avec ton premier message.
Lorsque je faisais :
Je n'avais aucun retour car je ne faisait que commenter ma condition en dessous, ainsi que le point virgule. Je ne sais pas comment se débrouille pgAdmin mais ne n'avais aucun résultat avec :
Commentaire à la noix... autant que le dev vous m'direz ^^
Reste que pour ma condition il fallait gérer un test sur des champs vides. Pas mal galère, surtout avec la gestion des champs = null, ou qui sont vide, ou qui sont égal à zéro...
Je me suis perdu dans la doc postgre et voilà ce qui en ressort... très moche m'enfin...
Indigestion de fonction SQL. Probable qu'il y ai plus simple...
Merci le père tu m'a aiguillé avec ton premier message.
Lorsque je faisais :
SELECT * FROM prod_purchase_order WHERE (part_number_part_id = 1 AND customer_id = 6)
Je n'avais aucun retour car je ne faisait que commenter ma condition en dessous, ainsi que le point virgule. Je ne sais pas comment se débrouille pgAdmin mais ne n'avais aucun résultat avec :
SELECT * FROM prod_purchase_order WHERE (part_number_part_id = 1 AND customer_id = 6)
-- and (customer_order_number NOT LIKE 'WIP%' OR starchip_order_num NOT LIKE 'WIP%');
Commentaire à la noix... autant que le dev vous m'direz ^^
Reste que pour ma condition il fallait gérer un test sur des champs vides. Pas mal galère, surtout avec la gestion des champs = null, ou qui sont vide, ou qui sont égal à zéro...
Je me suis perdu dans la doc postgre et voilà ce qui en ressort... très moche m'enfin...
SELECT * FROM prod_purchase_order WHERE (part_number_part_id = 1 AND customer_id = 6) AND (UPPER(SUBSTRING(COALESCE(customer_order_number, 'RIEN') FROM 1 FOR 3)) <> 'WIP');
Indigestion de fonction SQL. Probable qu'il y ai plus simple...