Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2981 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [access]petit souci tout bete de requete sql...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[access]petit souci tout bete de requete sql...

n°426037
freds45
Posté le 13-06-2003 à 10:00:52  profilanswer
 

Bonjour,
 
voilà, j'ai 2 tables, A et B, qui contiennent des entrées communes. Je voudrais récupérer toutes les entrées de chaque, sans les entrées qui sont dans les deux tables...
 
Ca fait une heure que je cherche, et IMPOSSIBLE de remettre la main sur la syntaxe :/
 
Pour l'instant ma requete ressemble à ca, mais il manque un truc....
 

SELECT DISTINCT [A].[NU SAL], [A].[NOM PRENOM], [A].AD1, [A].AD2, [A].AD3, [A].CODEPOST, [A].COMMUNE, entreprises.[NU ENT], entreprises.[LIBELLE ENT]
FROM entreprises, A
WHERE (((entreprises.[NU ENT])=[A]![NU ENT]));


 
Qqun peut me donner un petit coup de main ?
 
 :hello:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
mood
Publicité
Posté le 13-06-2003 à 10:00:52  profilanswer
 

n°426053
MagicBuzz
Posté le 13-06-2003 à 10:02:58  profilanswer
 

Si tu veux TOUTES les données des deux tables sans les doublons :
 
SELECT * FROM A
UNION
SELECT * FROM B
 
Si tu veux seulement les lignes différentes :
 
SELECT * FROM A
WHERE ID NOT IN (SELECT ID FROM B)
UNION
SELECT * FROM B
WHERE ID NOT IN (SELECT ID FROM A)

n°426087
freds45
Posté le 13-06-2003 à 10:08:40  profilanswer
 

J'avais fait un truc comme ca tt à l'heure déjà... :/
La requête ressemble à ca maintenant:
 

SELECT DISTINCT [A].[NU SAL], [A].[NOM PRENOM], [A].AD1, [A].AD2, [A].AD3, [A].CODEPOST, [A].COMMUNE, entreprises.[NU ENT], entreprises.[LIBELLE ENT]
FROM entreprises, A, B
WHERE (((entreprises.[NU ENT])=[A]![NU ENT]))
AND [A]![NU SAL] NOT IN (SELECT [B].[NU SAL] FROM B);


 
edit:Ca s'exécute, mais c DINGUE comment c'est lent !! Ca fait plus d'une minute que ca tourne, et toujours pas fini [:totoz]


Message édité par freds45 le 13-06-2003 à 10:13:08

---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°426850
MagicBuzz
Posté le 13-06-2003 à 15:55:16  profilanswer
 

NOT IN est très lent, parceque pour chaque ligne contenue dans cette clause, il va falloir vérifier son existence dans chaque ligne contenue dans la requête.
 
Grossomodo :
 
A : 100 000 lignes
B : 100 000 lignes
 
=> select ID from A where ID not in (select ID from B)
Ca va faire : 100 000 * 100 000 lignes à tester.

n°426852
MagicBuzz
Posté le 13-06-2003 à 15:57:17  profilanswer
 

PS: t'es sûr que tu as besoin du DISCTINCT ?
 
Parceque le distinct ça vaut pas mieu que NOT IN (c'est même pire, parceque au lieu de porter sur un champ unique par ligne, ça porte sur tout les champs de toutes les lignes...
 
=> Nécessité de parcourir l'intégralité des données avant de retourner le résultat, index ou pas. (alors que le not in et un index bien placé, tu ne lis même pas les données dans les tables...)

n°426944
freds45
Posté le 13-06-2003 à 17:07:38  profilanswer
 

bon finalement je m'en suis sorti :)
La méthode était peut être un peu lente :whistle:, mais pour un besoin poncutel ca a été :wahoo:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [access]petit souci tout bete de requete sql...

 

Sujets relatifs
souci SQLcréation d'une aide dans access 97
pb avec du sql sous access[Access] Où trouver un bon forum?
[SGBD] Pourquoi Access n'est pas bien ?Comment faire un moteur de recherche sur une base access ?
[ORACLE] Ajouter des guillemets dans le résultat d'une requête[Gimp] petite requete s'il vous plait
Access et double clefs etrangeres[Access 2002] C possible de créer des propriétés "maison"?
Plus de sujets relatifs à : [access]petit souci tout bete de requete sql...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR