Se connecter avec
S'enregistrer | Connectez-vous

Doute sur le résultat de ma requête

Dernière réponse : dans Programmation

Bonjour je voudrais en fait sélectionner les cartes qui sont dans une table et qui serait en meme temps au moins une autre table.
Donc j'ai fait ce code or il me sort rien donc je voulai savoir si mon code était bon.

Merci d'avance

Cordialement

  1. SELECT T_Cartes_OPPO_contrefait_hors_dossier.* INTO T_Test_nombre_carte_dans_dossiers
  2. FROM ((((((((((((T_Cartes_OPPO_contrefait_hors_dossier INNER JOIN [T_dossiers_entre_2000-et-4000] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_2000-et-4000].[N° Carte]) INNER JOIN [T_dossiers_entre_4000-et-5000] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_4000-et-5000].[N° Carte]) INNER JOIN [T_dossiers_entre_5000-et-5300] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_5000-et-5300].[N° Carte]) INNER JOIN [T_dossiers_entre_5300-et-5600] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_5300-et-5600].[N° Carte]) INNER JOIN [T_dossiers_entre_5600-et-5900] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_5600-et-5900].[N° Carte]) INNER JOIN [T_dossiers_entre_5900-et_6000] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_5900-et_6000].[N° Carte]) INNER JOIN [T_dossiers_entre_6000-et_6500] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_6000-et_6500].[N° Carte]) INNER JOIN [T_dossiers_entre_6500-et-7100] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_entre_6500-et-7100].[N° Carte]) INNER JOIN T_dossiers_inf_2000 ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = T_dossiers_inf_2000.[N° Carte]) INNER JOIN [T_dossiers_RL-et-CS] ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = [T_dossiers_RL-et-CS].[N° Carte]) INNER JOIN T_dossiers_sup_6000 ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = T_dossiers_sup_6000.[N° Carte]) INNER JOIN T_dossiers_sup_6500 ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = T_dossiers_sup_6500.[N° Carte]) INNER JOIN T_dossiers_sup_7100 ON T_Cartes_OPPO_contrefait_hors_dossier.NUISO2_cd = T_dossiers_sup_7100.[N° Carte];

Autres pages sur : doute resultat requete

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

Beurk, de l'ACCESS.

Je réécris ça en SQL normal, sans parenthèse ni crochet, ni espace dans les nom des champs et avec des alias pour ne pas avoir des lignes de 20000 caractères (ça pique vraiment les yeux) :
  1. SELECT A.*
  2. INTO T_Test_nombre_carte_dans_dossiers
  3. FROM
  4. T_Cartes_OPPO_contrefait_hors_dossier As A
  5. INNER JOIN T_dossiers_entre_2000-et-4000 B ON A.NUISO2_cd = B.N°_Carte
  6. INNER JOIN T_dossiers_entre_4000-et-5000 C ON A.NUISO2_cd = C.N°_Carte
  7. INNER JOIN T_dossiers_entre_5000-et-5300 D ON A.NUISO2_cd = D.N°_Carte
  8. INNER JOIN T_dossiers_entre_5300-et-5600 E ON A.NUISO2_cd = E.N°_Carte
  9. INNER JOIN T_dossiers_entre_5600-et-5900 F ON A.NUISO2_cd = F.N°_Carte
  10. INNER JOIN T_dossiers_entre_5900-et_6000 G ON A.NUISO2_cd = G.N°_Carte
  11. INNER JOIN T_dossiers_entre_6000-et_6500 H ON A.NUISO2_cd = H.N°_Carte
  12. INNER JOIN T_dossiers_entre_6500-et-7100 I ON A.NUISO2_cd = I.N°_Carte
  13. INNER JOIN T_dossiers_inf_2000 J ON A.NUISO2_cd = J.N°_Carte
  14. INNER JOIN T_dossiers_RL-et-CS K ON A.NUISO2_cd = K.N°_Carte
  15. INNER JOIN T_dossiers_sup_6000 L ON A.NUISO2_cd = L.N°_Carte
  16. INNER JOIN T_dossiers_sup_6500 M ON A.NUISO2_cd = M.N°_Carte
  17. INNER JOIN T_dossiers_sup_7100 N ON A.NUISO2_cd = N.N°_Carte


Nan mais quelle horreur ! Vous avez découpé vos tables en tranche de 2000 dossiers. C'est du grand n'importe quoi.
Une base de données sert justement à ne pas faire ce genre de choses :ouch: 

Le mal est fait tant pis.

Revenons à nos moutons. Il faut que tu cherches dans A ce qui existe ailleurs.

Ok, ailleurs :
  1. SELECT N°_Carte FROM T_dossiers_entre_2000-et-4000
  2. UNION SELECT N°_Carte FROM T_dossiers_entre_4000-et-5000
  3. UNION SELECT N°_Carte FROM T_dossiers_entre_5000-et-5300
  4. UNION SELECT N°_Carte FROM T_dossiers_entre_5300-et-5600
  5. UNION SELECT N°_Carte FROM T_dossiers_entre_5600-et-5900
  6. UNION SELECT N°_Carte FROM T_dossiers_entre_5900-et_6000
  7. UNION SELECT N°_Carte FROM T_dossiers_entre_6000-et_6500
  8. UNION SELECT N°_Carte FROM T_dossiers_entre_6500-et-7100
  9. UNION SELECT N°_Carte FROM T_dossiers_inf_2000
  10. UNION SELECT N°_Carte FROM T_dossiers_RL-et-CS
  11. UNION SELECT N°_Carte FROM T_dossiers_sup_6000
  12. UNION SELECT N°_Carte FROM T_dossiers_sup_6500
  13. UNION SELECT N°_Carte FROM T_dossiers_sup_7100


Donc :
  1. SELECT *
  2. INTO T_Test_nombre_carte_dans_dossiers
  3. FROM T_Cartes_OPPO_contrefait_hors_dossier A
  4. WHERE NUISO2_cd IN (
  5. SELECT N°_Carte FROM T_dossiers_entre_2000-et-4000
  6. UNION SELECT N°_Carte FROM T_dossiers_entre_4000-et-5000
  7. UNION SELECT N°_Carte FROM T_dossiers_entre_5000-et-5300
  8. UNION SELECT N°_Carte FROM T_dossiers_entre_5300-et-5600
  9. UNION SELECT N°_Carte FROM T_dossiers_entre_5600-et-5900
  10. UNION SELECT N°_Carte FROM T_dossiers_entre_5900-et_6000
  11. UNION SELECT N°_Carte FROM T_dossiers_entre_6000-et_6500
  12. UNION SELECT N°_Carte FROM T_dossiers_entre_6500-et-7100
  13. UNION SELECT N°_Carte FROM T_dossiers_inf_2000
  14. UNION SELECT N°_Carte FROM T_dossiers_RL-et-CS
  15. UNION SELECT N°_Carte FROM T_dossiers_sup_6000
  16. UNION SELECT N°_Carte FROM T_dossiers_sup_6500
  17. UNION SELECT N°_Carte FROM T_dossiers_sup_7100 )

Oui je sais pour les bases c'est une horreur mais j'ai pas le choix!!!
ils prefere utilisé des bases Access qu'un vrai SQL (pour les utilisateurs non informaticien c'est plus simple a manipuler)
Car si tu regroupe tout les temps de recherche sont trop long car cet idiot d'access charge tout en mémoire et la ca sature donc on sépare pour ller plus vite c débile je sais

il me sort que
Citation :
cette opéraiton n'est pas autorisée dans les sous requêtes


J'avais pris ce code la

  1. SELECT *
  2. INTO T_Test_nombre_carte_dans_dossiers
  3. FROM T_Cartes_OPPO_contrefait_hors_dossier
  4. WHERE NUISO2_cd IN (
  5. SELECT N°_Carte FROM T_dossiers_entre_2000-et-4000
  6. UNION SELECT N°_Carte FROM T_dossiers_entre_4000-et-5000
  7. UNION SELECT N°_Carte FROM T_dossiers_entre_5000-et-5300
  8. UNION SELECT N°_Carte FROM T_dossiers_entre_5300-et-5600
  9. UNION SELECT N°_Carte FROM T_dossiers_entre_5600-et-5900
  10. UNION SELECT N°_Carte FROM T_dossiers_entre_5900-et_6000
  11. UNION SELECT N°_Carte FROM T_dossiers_entre_6000-et_6500
  12. UNION SELECT N°_Carte FROM T_dossiers_entre_6500-et-7100
  13. UNION SELECT N°_Carte FROM T_dossiers_inf_2000
  14. UNION SELECT N°_Carte FROM T_dossiers_RL-et-CS
  15. UNION SELECT N°_Carte FROM T_dossiers_sup_6000
  16. UNION SELECT N°_Carte FROM T_dossiers_sup_6500
  17. UNION SELECT N°_Carte FROM T_dossiers_sup_7100 )
Expert Programmation

T'imquiète, je me doute que les horreurs ne sont pas de toi. TU as vu, j'ai mis "VOUS AVEZ DECOUPE" et non pas "TU AS DECOUPE".

Grrr :fou:  Testé et approuvé avec un vrai SGBD (ORACLE)
Je cherche un ACCESS et je regarde.
Expert Programmation

Ce sont les UNIONs qui sont refusés par ACCESS.

Solution : Créer une requête Ailleurs (Dont le code est donné dans mon premier message). Utiliser cette requête à la place des SELECT UNION SELECT.

Solution vérifiée sous ACCESS 2003 !
Expert Programmation

Citation :
Cela fonctionnerait-il avec OR ?
Relis ton manuel de SQL :( 

Citation :
Utiliser une requête
Ben oui, une requête. Je sais que tu sais créer une requête sous ACCESS.

Citation :
a la place des UNION SELECT
Je me suis cogné 13 lignes de SELECT UNION SELECT, je ne recommence pas.

Citation :
de quel code parle tu dans ton premier message.
De celui où il y a 13 ligne de SELECT UNION SELECT, que je ne recommencerais pas.
Lassé par la pub ? Créez un compte