Se connecter avec
S'enregistrer | Connectez-vous

Access question sur requete selection

Dernière réponse : dans Programmation

Bonjour a tous!
Je suis en train de faire une requete selection sous access et ce que j'aimerais c'est faire apparaitre les numeros d'un champs d'une table (table1) qui ne sont pas présent dans lune autre table (table2).
Donc je créer ma requete sélection choisis mes tables etc...
Et dans la case critère j'ai tenté
  1. [table1].[numero]<>[table2].[num]

Il demande de rentrer la valeur du paramètre pour chacune des tables. Je laisse les champs vide et ensuite aucun numéro s'affiche alors qu'il y a des numéro de la table1 qui ne sont pas présent dans la table2
Donc quels sont ces valeurs de paramètres? et si on peu m'expliquer ce qui ne va pas dans ma manière de procédé, je vous remercie d'avance

Cordialement
Lassé par la pub ? Créez un compte
Expert Programmation

Beurk, je déteste la notation ACCESS par défaut.
Bon sang, SQL est une norme, Microsoft pourrait la respecter !

Et comme ça, ça marche ? (Je ne l'ai pas testé sous ACCESS)
  1. SELECT *
  2. FROM table1
  3. WHERE numero NOT IN (SELECT DISTINCT numero
  4. FROM table2);

erreur dans l'énnoncé d'un coté il y a
table1.numéro et le l'autre table2.num
Ce sont les meme type de données qu'il y a à l'intérieur
J'ai créer une jointure mais il m'affiche que les numéro qui sont égaux entre la table1 et la table 2 or j'aimerais l'inverse

Voila mon code SQL

  1. SELECT T_histo_cartes_local.num_carte, T_histo_cartes_local.libelle_commercant, T_histo_cartes_local.MCC
  2. FROM T_histo_cartes_local INNER JOIN [T_OPPO Hors abusif] ON T_histo_cartes_local.num_carte = [T_OPPO Hors abusif].[N° de carte]
  3. WHERE (([T_histo_cartes_local].[num_carte]<>[T_OPPO hors abusifs].[N° de carte]));
Expert Programmation

Permets-moi ce conseil : Pas d'espace dans les noms de tables ou de colonnes, vire les crochets et les parenthèses inutiles et n'hésite pas à mettre bien en forme tes requêtes. Plus c'est lisible, plus vite on repère les erreurs.

Ta requête :
  1. SELECT T_histo_cartes_local.num_carte,
  2. T_histo_cartes_local.libelle_commercant,
  3. T_histo_cartes_local.MCC
  4.  
  5. FROM T_histo_cartes_local INNER JOIN [T_OPPO Hors abusif]
  6. ON T_histo_cartes_local.num_carte = [T_OPPO Hors abusif].[N° de carte]
  7.  
  8. WHERE T_histo_cartes_local.num_carte <> [T_OPPO hors abusifs].[N° de carte];
Ligne 6, tu dis que la jointure doit se faire sur num_carte = N° de carte, ligne 8, tu dis le contraire.

_______________________________________


Tu n'as pas répondu, la requête que je t'ai donnée précédemment ne fonctionne-t-elle pas ?

Citation :
(Je ne l'ai pas testé sous ACCESS)
Je viens de le tester. Ça marche !

Exuse moi j'étais absent;
Je viens d'essayé ton code cela fonctionne nickel merci beaucoup!!
En fait c'était juste un NOT a mettre pour inverser le résultat voulu

J'aimerais faire la comparaison sur plusieur table donc j'ai fais cela mais vu qu'il y 7 table mais il me dis qu'il peut retourner un seul enregistrement si quelqu'un peut m'expliquer pourquoi merci d'avance

  1. SELECT *
  2. FROM [T_OPPO Hors abusif]
  3. WHERE (
  4. (
  5. ([T_OPPO Hors abusif].[N° de carte]) not In
  6. (SELECT DISTINCT [num_carte] FROM T_dossiers_inf_2000])
  7. AND (SELECT DISTINCT [num_carte] FROM [T_dossiers_entre_2000-et-4000]
  8. )
  9. );

Donc j'ai tenté cette requête mais Access me la rejette
il me demande un valeur pour certaines table que j'ai voulu comparé pour extraire les numero qui ne sont pas dans les tables

et il me demande une valeur pour

  1. [T_dossiers_entre_5900-et_6000].[N° Carte]

et pour
  1. [T_dossiers_entre_6500-et-7100].[N° Carte]


Si quelqu'un peut me dire pourquoi ça me le fait sur ces deux tables et pas les autres je le remercie d'avance .
D'ailleur les champs indiqué sont remplis elles aussi
  1. SELECT T_OPPO_sur_8derniers_mois.[N° de CR], T_OPPO_sur_8derniers_mois.[N° de carte], T_OPPO_sur_8derniers_mois.[Date expir], T_OPPO_sur_8derniers_mois.[Date réception], T_OPPO_sur_8derniers_mois.Motif, T_OPPO_sur_8derniers_mois.[Libellé motif]
  2. FROM (((((((((T_OPPO_sur_8derniers_mois LEFT JOIN T_dossiers_inf_2000 ON T_OPPO_sur_8derniers_mois.[N° de carte] = T_dossiers_inf_2000.[N° Carte]) LEFT JOIN [T_dossiers_entre_2000-et-4000] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_2000-et-4000].[N° Carte]) LEFT JOIN [T_dossiers_entre_4000-et-5000] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_4000-et-5000].[N° Carte]) LEFT JOIN [T_dossiers_entre_5000-et-5300] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_5000-et-5300].[N° Carte]) LEFT JOIN [T_dossiers_entre_5300-et-5600] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_5300-et-5600].[N° Carte]) LEFT JOIN [T_dossiers_entre_5600-et-5900] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_5600-et-5900].[N° Carte]) LEFT JOIN [T_dossiers_entre_5900-et_6000] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_5900-et_6000].[N° Carte]) LEFT JOIN [T_dossiers_entre_6000-et_6500] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_6000-et_6500].[N° Carte]) LEFT JOIN [T_dossiers_entre_6500-et-7100] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_entre_6500-et-7100].[N° Carte]) LEFT JOIN [T_dossiers_RL-et-CS] ON T_OPPO_sur_8derniers_mois.[N° de carte] = [T_dossiers_RL-et-CS].[N° Carte]
  3. WHERE T_dossiers_inf_2000.[N° Carte] IS NULL
  4. AND [T_dossiers_entre_2000-et-4000].[N° Carte] IS NULL
  5. AND [T_dossiers_entre_4000-et-5000].[N° Carte] IS NULL
  6. AND [T_dossiers_entre_5000-et-5300].[N° Carte] IS NULL
  7. AND [T_dossiers_entre_5300-et-5600].[N° Carte] IS NULL
  8. AND [T_dossiers_entre_5900-et-6000].[N° Carte] IS NULL
  9. AND [T_dossiers_entre_6000-et-6500].[N° Carte] IS NULL
  10. AND [T_dossiers_entre_6500-et-7100].[N° Carte] IS NULL;
Lassé par la pub ? Créez un compte