"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