Requête SQL sur la clause in et not in
bon soir c'est ma premiere participattion
j' ai 02 table sous access :
1-epost : poste :integer ,ste:integer ,date:date.
2-propost : mois;string ,ste:integer ,post:integer
je veut extraire les poste de la table epost qui figure entre 01/01/2008 et 30/01/2008 et qui ontle champ ste= 861
et qui figure dans la table propost dans le mois =janvier et ste=861.
la premiere requete select poste from epost
where date between :a and :b
and ste :c
Code:
1 2 3 4
|
adoquery1.parameters.parambyname('a').value:= datetimepicker1.date
adoquery1.parameters.parambyname('b').value:= datetimepicker2.date
adoquery1.parameters.parambyname('c').value:= edit1.text; |
===== le resultat est ======
les postes resultant : 87
12
deuxieme requete: select post from propost
Code:
1 2 3 4
|
where mois=:a and ste=:b
adoquery1.parameters.parambyname('a).value:= edit2.text;
adoquery1.parameters.parambyname('b).value:= edit1.text; |
==== le resultat =====
les postes : 87
:33
================ma question =========
comment je peut avec une requete sql extraire les postes dans
propost(2 table) est ne sont pas dans epost(1 table)
et j'àbtien le resultat suivant:
33
en realite j'ai essaye avec ce code est as de resultat:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
t4.Close; // t4 c'est un adoquery3
t4.sql.Clear;
t4.sql.Add('select post from propost');
t4.sql.Add('where post not in (select poste');
t4.sql.Add('from epost where date between :a and :b ');
t4.SQL.Add('and ste =:e)');
t4.sql.add('mois =:c and ste=:e');
t4.parameters.ParamByName('a').Value:=datetostr(d1.Date);
t4.parameters.ParamByName('b').Value:=datetostr(d2.Date);
t4.parameters.ParamByName('c').Value:= combobox3.Text;
t4.Parameters.ParamByName('e').Value:= combobox1.Text;
t4.open; |
je repose mon question au secour
:(:oops::cry::cry:
bon jour champions
pour quoi il me sort le message :type de donné incompatible dans l'expression de critére.
il me semble correcte.
ne me laissez pas avec mes soucis.
merci d'avance
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery do
begin
close;
sql.Clear;
sql.Add('select poste from epost ');
sql.Add('WHERE date BETWEEN :dateDebut AND :dateFin ');
sql.add('AND ste = :codeSte AND EXISTS( SELECT post FROM propost ');
sql.Add(' WHERE propost.post = epost.poste AND ste = :codeSte');
sql.Add('AND mois = :nomMois)');
parameters.ParamByName('nommois').Value:=combobox1.Text;
parameters.parambyname('codeste').value:=combobox2.text;
parameters.parambyname('datedebut').value:= datetostr(d.date);
parameters.parambyname('datefin').value:= datetostr(f.date);
open;
end;
end; |