Doute sur le résultat de ma requête

darkspoilt

Expert
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

Code:
SELECT T_Cartes_OPPO_contrefait_hors_dossier.* INTO T_Test_nombre_carte_dans_dossiers
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];
 

n1kk0

Habitué
1 - Ta requete pique les yeux :o
2 - Il faut connaitre la structure de tes tables pour avoir une idée il me semble
3 - vu toutes les jointures internes tu testes si ta carte est dans toutes les tables là
 

zeb

Modérateur
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) :
Code:
SELECT         A.*
  INTO         T_Test_nombre_carte_dans_dossiers
  FROM 
            	 T_Cartes_OPPO_contrefait_hors_dossier As A
    INNER JOIN T_dossiers_entre_2000-et-4000 B ON A.NUISO2_cd = B.N°_Carte
    INNER JOIN T_dossiers_entre_4000-et-5000 C ON A.NUISO2_cd = C.N°_Carte
    INNER JOIN T_dossiers_entre_5000-et-5300 D ON A.NUISO2_cd = D.N°_Carte
    INNER JOIN T_dossiers_entre_5300-et-5600 E ON A.NUISO2_cd = E.N°_Carte
    INNER JOIN T_dossiers_entre_5600-et-5900 F ON A.NUISO2_cd = F.N°_Carte
    INNER JOIN T_dossiers_entre_5900-et_6000 G ON A.NUISO2_cd = G.N°_Carte
    INNER JOIN T_dossiers_entre_6000-et_6500 H ON A.NUISO2_cd = H.N°_Carte
    INNER JOIN T_dossiers_entre_6500-et-7100 I ON A.NUISO2_cd = I.N°_Carte
    INNER JOIN T_dossiers_inf_2000           J ON A.NUISO2_cd = J.N°_Carte
    INNER JOIN T_dossiers_RL-et-CS           K ON A.NUISO2_cd = K.N°_Carte
    INNER JOIN T_dossiers_sup_6000           L ON A.NUISO2_cd = L.N°_Carte
    INNER JOIN T_dossiers_sup_6500           M ON A.NUISO2_cd = M.N°_Carte
    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 :
Code:
      SELECT N°_Carte FROM T_dossiers_entre_2000-et-4000 
UNION SELECT N°_Carte FROM T_dossiers_entre_4000-et-5000 
UNION SELECT N°_Carte FROM T_dossiers_entre_5000-et-5300 
UNION SELECT N°_Carte FROM T_dossiers_entre_5300-et-5600 
UNION SELECT N°_Carte FROM T_dossiers_entre_5600-et-5900 
UNION SELECT N°_Carte FROM T_dossiers_entre_5900-et_6000 
UNION SELECT N°_Carte FROM T_dossiers_entre_6000-et_6500 
UNION SELECT N°_Carte FROM T_dossiers_entre_6500-et-7100 
UNION SELECT N°_Carte FROM T_dossiers_inf_2000           
UNION SELECT N°_Carte FROM T_dossiers_RL-et-CS           
UNION SELECT N°_Carte FROM T_dossiers_sup_6000           
UNION SELECT N°_Carte FROM T_dossiers_sup_6500           
UNION SELECT N°_Carte FROM T_dossiers_sup_7100

Donc :
Code:
SELECT *
  INTO T_Test_nombre_carte_dans_dossiers
  FROM T_Cartes_OPPO_contrefait_hors_dossier A
 WHERE NUISO2_cd IN (
          SELECT N°_Carte FROM T_dossiers_entre_2000-et-4000 
    UNION SELECT N°_Carte FROM T_dossiers_entre_4000-et-5000 
    UNION SELECT N°_Carte FROM T_dossiers_entre_5000-et-5300 
    UNION SELECT N°_Carte FROM T_dossiers_entre_5300-et-5600 
    UNION SELECT N°_Carte FROM T_dossiers_entre_5600-et-5900 
    UNION SELECT N°_Carte FROM T_dossiers_entre_5900-et_6000 
    UNION SELECT N°_Carte FROM T_dossiers_entre_6000-et_6500 
    UNION SELECT N°_Carte FROM T_dossiers_entre_6500-et-7100 
    UNION SELECT N°_Carte FROM T_dossiers_inf_2000           
    UNION SELECT N°_Carte FROM T_dossiers_RL-et-CS           
    UNION SELECT N°_Carte FROM T_dossiers_sup_6000           
    UNION SELECT N°_Carte FROM T_dossiers_sup_6500           
    UNION SELECT N°_Carte FROM T_dossiers_sup_7100 )
 

darkspoilt

Expert
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
 

darkspoilt

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

J'avais pris ce code la

Code:
SELECT *
  INTO T_Test_nombre_carte_dans_dossiers
  FROM T_Cartes_OPPO_contrefait_hors_dossier
WHERE NUISO2_cd IN (
          SELECT N°_Carte FROM T_dossiers_entre_2000-et-4000
    UNION SELECT N°_Carte FROM T_dossiers_entre_4000-et-5000
    UNION SELECT N°_Carte FROM T_dossiers_entre_5000-et-5300
    UNION SELECT N°_Carte FROM T_dossiers_entre_5300-et-5600
    UNION SELECT N°_Carte FROM T_dossiers_entre_5600-et-5900
    UNION SELECT N°_Carte FROM T_dossiers_entre_5900-et_6000
    UNION SELECT N°_Carte FROM T_dossiers_entre_6000-et_6500
    UNION SELECT N°_Carte FROM T_dossiers_entre_6500-et-7100
    UNION SELECT N°_Carte FROM T_dossiers_inf_2000         
    UNION SELECT N°_Carte FROM T_dossiers_RL-et-CS         
    UNION SELECT N°_Carte FROM T_dossiers_sup_6000         
    UNION SELECT N°_Carte FROM T_dossiers_sup_6500         
    UNION SELECT N°_Carte FROM T_dossiers_sup_7100 )
 

zeb

Modérateur
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.
 

zeb

Modérateur
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 !
 

darkspoilt

Expert
Tu peux me réexpliquer car j'ai pas trop compris utilisé une requete a la place des UNION SELECT et de quel code parle tu dans ton premier message.
Sinon avec des OR cela ne fonctionnerais pas???
 

zeb

Modérateur
Cela fonctionnerait-il avec OR ?
Relis ton manuel de SQL :(

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

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

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.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 852
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut