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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL / ACCESS] question un peu tordu sur une requete.

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL / ACCESS] question un peu tordu sur une requete.

n°1274259
Frogyman
Giggity giggity goo
Posté le 28-12-2005 à 23:29:19  profilanswer
 

Bonjour,
 
Je vais expliquer ma question par un exemple :
 
J'ai deux tables tbl1 et tbl2 avec une relation 1/plusieurs sur les champs tbl1.fld1 et tbl2.fld2.
 
J'ai une troisieme table indépendante tbl3 avec les champs tbl3.fld1 et tbl3.fld2.
 
 
J'aimerais sortir uniquement les couples de valeurs de tbl3 qui n'existe pas comme relation 1/plusieurs des champs tbl1.fld1 et tbl2.fld2.
 
Je sais pas si c'est clair. Pour l'instant j'arrive a sortir uniquement ceux qui existent.
 
help !  :(

mood
Publicité
Posté le 28-12-2005 à 23:29:19  profilanswer
 

n°1274351
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-12-2005 à 11:20:27  profilanswer
 

hmmm
 

Code :
  1. select tbl3.fld1, tbl3.fld2
  2. from tbl3
  3. where not exists (select null from tbl2, tbl1 where tbl2.fld2 = tbl1.fld1 and tbl1.fld1 = tbl3.fld1 and tbl2.fld2 = tbl3.fld2)


 
Ca dit quoi ?

n°1274353
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-12-2005 à 11:25:10  profilanswer
 

sinon, y'a le mot-clé "difference", mais je ne pense pas qu'il marche avec Access.
 
sinon, pour ce qui est de tes explications, je suis pas trop sûr de suivre.
 
si y'a une FK entre tbl2.fld2 et tbl1.fld1, alors on part du principe que toute valeur de tbl2.fld2 existe dans tbl1.fld1
Ensuite, si tu cherches les couples (1, 1), (2, 2), etc. avec à chaque fois tbl1.fld1 = tbl2.fld2, alors il suffit de chercher les valeurs de fld3.tbl1 ou fld3.fld2 sont différentes, ou non contenues dans tbl2.fld2
 
On peut donc écrire la requête comme suis :
 

Code :
  1. select tbl3.fld1, tbl3.fld2
  2. from tbl3
  3. where tbl3.fld1 <> tbl3.fld2
  4. or not exists (select null from tbl2 where tbl2.fld2 = tbl3.fld1)


 
A vue de nez, la seconde doit être très légèrement plus rapide


Message édité par Arjuna le 29-12-2005 à 11:25:43
n°1274354
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-12-2005 à 11:26:17  profilanswer
 

ceci dit, je trouve ton problème étrange...


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

  [SQL / ACCESS] question un peu tordu sur une requete.

 

Sujets relatifs
[PL/SQL] Récupérer l'erreur[SQL] Question sur foreign key
[SQL] (noob) difference entre char et varchar[SQL/PHP] Selectionner toute les tables d'une base
Question sur deletenouvelle question linux...
ptite question linux[SQL SERVER 2000] Definir un ordre de priorité pour les bases??
[MySQL] requete qui me renvoi presque tout 
Plus de sujets relatifs à : [SQL / ACCESS] question un peu tordu sur une requete.


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