|
requête sql - syntaxe ??? |
Started by pierre.flandre, Aug., 16 2004 6:50 PM - 3 replies |
| |
| | | |
|
| |
Posted on August, 16 2004 - 6:50 PM |
Débutant en windev , j'ai la question suivante concernant les requêtes.
wd8 314 soit 2 fichiers
avion_ticket o,n suplement_reduction 1,1
base mysql avec accès natif
j'effectue la requête SQL suivante : (avec le générateur de requête windev)
SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 ORDER BY at_num_billet ASC, at_date_emission ASC
cela m'affiche tous les avion_ticket+le suplement reduction correspondant à la requête .... sauf les avion_ticket qui n'ont pas de suplement_reduction Si je retire mes conditions sur le fichier suplement_reduction, tous les avion_ticket sont bien affichés même ceux sans suplement_reduction
comment faire pour qu'il m'affiche aussi les avion_ticket qui n'ont pas de suplement_reduction dans la même table
D'avance merci Pierre |
| |
| |
| | | |
|
| | |
| |
Posted on August, 16 2004 - 8:00 PM |
"Pierre Flandre" <pierre.flandre@japanpitravel.com> wrote:
Débutant en windev , j'ai la question suivante concernant les requêtes.
wd8 314 soit 2 fichiers
avion_ticket o,n suplement_reduction 1,1
base mysql avec accès natif
j'effectue la requête SQL suivante : (avec le générateur de requête windev)
SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 ORDER BY at_num_billet ASC, at_date_emission ASC
cela m'affiche tous les avion_ticket+le suplement reduction correspondant
à
la requête .... sauf les avion_ticket qui n'ont pas de suplement_reduction Si je retire mes conditions sur le fichier suplement_reduction, tous les avion_ticket sont bien affichés même ceux sans suplement_reduction
comment faire pour qu'il m'affiche aussi les avion_ticket qui n'ont pas de
suplement_reduction dans la même table
D'avance merci Pierre
D'après ce que je comprends de ta demande, tu veux avoir tous les avion_ticket qui ont un supplément_reduction combinés à tous les avion_ticket qui n'ont pas de supplément_reduction. Il faut travailler avec 2 resultats distincts combinées avec UNION. Essaie ceci:
SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 UNION ALL SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, 0 AS at_cleunik_su, 0 AS sn_prix, 0 AS ctpro_cleunik, 0 AS snlib_cleunik FROM Avion_ticket WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {param2} AND Avion_ticket.at_cleunik NOT IN (SELECT DISTINCT suplement_reduction.at_cleunik FROM supplement_reduction) ORDER BY at_num_billet ASC, at_date_emission ASC
Christian Potvin Beaulieu Canada |
| |
| |
| | | |
|
| | |
| |
Posted on August, 17 2004 - 4:26 PM |
"Christian Potvin" <cpotvin@beaulieucanada.ca> wrote:
"Pierre Flandre" <pierre.flandre@japanpitravel.com> wrote: Débutant en windev , j'ai la question suivante concernant les requêtes.
wd8 314 soit 2 fichiers
avion_ticket o,n suplement_reduction 1,1
base mysql avec accès natif
j'effectue la requête SQL suivante : (avec le générateur de requête windev)
SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 ORDER BY at_num_billet ASC, at_date_emission ASC
cela m'affiche tous les avion_ticket+le suplement reduction correspondant à
la requête .... sauf les avion_ticket qui n'ont pas de suplement_reduction Si je retire mes conditions sur le fichier suplement_reduction, tous les avion_ticket sont bien affichés même ceux sans suplement_reduction
comment faire pour qu'il m'affiche aussi les avion_ticket qui n'ont pas de suplement_reduction dans la même table
D'avance merci Pierre
D'après ce que je comprends de ta demande, tu veux avoir tous les avion_ticket qui ont un supplément_reduction combinés à tous les avion_ticket qui n'ont pas de supplément_reduction. Il faut travailler avec 2 resultats distincts combinées avec UNION. Essaie ceci: SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 UNION ALL SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, 0 AS at_cleunik_su, 0 AS sn_prix, 0 AS ctpro_cleunik, 0 AS snlib_cleunik FROM Avion_ticket WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {param2} AND Avion_ticket.at_cleunik NOT IN (SELECT DISTINCT suplement_reduction.at_cleunik FROM supplement_reduction) ORDER BY at_num_billet ASC, at_date_emission ASC Christian Potvin Beaulieu Canada Bonjour..
Le fait de mettre des conditions dans la table suplement_reduction fait que vous n'aurez que les enregistrements qui répondent à cette condition. Et si l'enregistrement n'existe pas, il n'apparait pas, puisqu'il ne répont pas. Le lien Outer Join n'y changera rien. Il faudrait ajouter une condition acceptant les enregistrements n'ayant pas de valeur, donc NULL. Bonne chance |
| |
| |
| | | |
|
| | |
| |
Posted on August, 17 2004 - 4:52 PM |
Grand merci pour la réponse , le problème est que la même requête fonctionne correctement sur une base HF7 avec les mêmes fichiers.
je continue ....
"Michel Lahellec" <kerloic.armor@sympatico.ca> a écrit dans le message de news:4121f95d$1@news.pcsoft.fr...
"Christian Potvin" <cpotvin@beaulieucanada.ca> wrote: "Pierre Flandre" <pierre.flandre@japanpitravel.com> wrote: Débutant en windev , j'ai la question suivante concernant les requêtes.
wd8 314 soit 2 fichiers
avion_ticket o,n suplement_reduction 1,1
base mysql avec accès natif
j'effectue la requête SQL suivante : (avec le générateur de requête
windev)
SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 ORDER BY at_num_billet ASC, at_date_emission ASC
cela m'affiche tous les avion_ticket+le suplement reduction
correspondant
à la requête .... sauf les avion_ticket qui n'ont pas de suplement_reduction
Si je retire mes conditions sur le fichier suplement_reduction, tous les avion_ticket sont bien affichés même ceux sans suplement_reduction
comment faire pour qu'il m'affiche aussi les avion_ticket qui n'ont pas de suplement_reduction dans la même table
D'avance merci Pierre
D'après ce que je comprends de ta demande, tu veux avoir tous les avion_ticket > >qui ont un supplément_reduction combinés à tous les avion_ticket qui n'ont
pas de supplément_reduction. Il faut travailler avec 2 resultats distincts
combinées avec UNION. Essaie ceci:
SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, suplement_reduction.at_cleunik AS at_cleunik_su, suplement_reduction.sn_prix AS sn_prix, suplement_reduction.ctpro_cleunik AS ctpro_cleunik, suplement_reduction.snlib_cleunik AS snlib_cleunik FROM Avion_ticket LEFT OUTER JOIN suplement_reduction ON Avion_ticket.at_cleunik = suplement_reduction.at_cleunik WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {Param2} AND suplement_reduction.ctpro_cleunik = 1 AND suplement_reduction.snlib_cleunik = -1 UNION ALL SELECT Avion_ticket.at_num_billet AS at_num_billet, Avion_ticket.at_date_emission AS at_date_emission, Avion_ticket.at_cleunik AS at_cleunik, Avion_ticket.at_val_facial AS at_val_facial, 0 AS at_cleunik_su, 0 AS sn_prix, 0 AS ctpro_cleunik, 0 AS snlib_cleunik FROM Avion_ticket WHERE Avion_ticket.at_date_emission BETWEEN {Param1} AND {param2} AND Avion_ticket.at_cleunik NOT IN (SELECT DISTINCT suplement_reduction.at_cleunik FROM supplement_reduction) ORDER BY at_num_billet ASC, at_date_emission ASC
Christian Potvin Beaulieu Canada
Bonjour.. Le fait de mettre des conditions dans la table suplement_reduction fait que
vous n'aurez que les enregistrements qui répondent à cette condition. Et si l'enregistrement n'existe pas, il n'apparait pas, puisqu'il ne répont
pas. Le lien Outer Join n'y changera rien. Il faudrait ajouter une condition acceptant les enregistrements n'ayant pas
de valeur, donc NULL. Bonne chance
|
| |
| |
| | | |
|
| | | | |
| | |
|