PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » HELP - Requete posant problème » 16/08/2017 23:03:24

Merci infiniment pour cette réponse dverite. En effet, vous avez bien compris l'idée. Je vais tester dès demain vos recommandations et reviendrai pour vous faire part des résultats!

#2 Re : Général » HELP - Requete posant problème » 16/08/2017 14:31:05

j'essaie avec parenthèses, sans parenthèses mais rien 'y fait ... Je pense que le "OR" sème la zizanie ...
Je n'arrive pas à avoir une requète performante sad

#3 Re : Général » HELP - Requete posant problème » 16/08/2017 12:31:23

j'ai toujours le message :

ERROR:  syntax error at or near "ON"
LINE 15: ...r_id = pos_order.id), JOIN (stock_production_lot (ON pos_ord...
                                                              ^
********** Error **********

ERROR: syntax error at or near "ON"
SQL state: 42601
Character: 519

#4 Général » HELP - Requete posant problème » 16/08/2017 12:16:55

Princesse_Tamtam
Réponses : 9

Bonjour,

Je ne suis pas du tout experte sql mais je dois utiliser ce langage afin de mettre en place des rapoorts sur des etat comptables, de vente etc...
Aujourd'hui je bloque sur cette requête somme toute simple, mais pour laquelle il me manque quelques clés pou avoir des résultats cohérents.
La requete est la suivante :

ELECT
a.create_date AS date_de_vente,
a.original_list_price AS PRIX_TTC,
a.qty AS Quantite,
b.barcode,
c.name AS Nom_IMEI,
d.customer_number,
d.payment_code_display,
d.state AS Statut,
e.lastname AS Vendeur,
f.name AS produit,
CASE
WHEN (a.lot_id IS NOT NULL) AND (a.lot_id = c.id) THEN c.name
ELSE b.name_template

END AS name
FROM pos_order_line AS a,  product_product AS b, stock_production_lot AS c, pos_order AS  d, res_users AS e, product_template AS f
WHERE a.order_id = d.id AND d.user_id = e.id AND c.product_id = b.id AND (b.product_tmpl_id = f.id OR a.lot_id = c.id)
ORDER BY a.create_date ASC;

Lorsque je laisse cette condition : a.lot_id = c.id : je ne dispose que des produits de types terminaux (lot_id = IMEI)
Lorsque je l'enlève, la requête semble effectuer un produit cartésien qui me remonte des résultats naturellement incohérents.
Quelqu'un peut-il m'aider à voir ce qui cloche dans cette requête? Je sais que je ne devrais pas mettre toutes mes jointures dans la clause WHERE, mais j'ai du mal à trouver la syntaxe correcte des JOIN avec POSTGRES.
Merci pour votre aide et votre indulgence smile

Pied de page des forums

Propulsé par FluxBB