#1 Thu 06 April 2006 11:52
- Guigui
- Juste Inscrit !
- Date d'inscription: 4 Nov 2005
- Messages: 3
Sélection SQL
Bonjour
Je souhaite comparer 2 tables : extraire de Table1 les données qui ne sont
pas contenues dans Table2 sur un champ texte. Qui est également l'unique
champ commun des deux tables.
Quand j'écris : Table1.champx Table2.champx, il m'est demandé la clause
de critère WHERE.
Je fais quoi ?
Merci de vos réponses.
Hors ligne
#2 Thu 06 April 2006 12:23
- benulti
- Participant assidu
- Lieu: là-bas
- Date d'inscription: 5 Sep 2005
- Messages: 332
Re: Sélection SQL
Bonjour,
dans table tu mets table1 et table2
et dans critère
table1.champx <> table2.champx
voila
Hors ligne
#3 Thu 06 April 2006 12:34
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Sélection SQL
Bonjour,
Compte tenu de ses caprices il vaut mieux dire à MI where table1.champx=table2.champx puis dans la fenêtre donnée de table1 inverser la sélection
Hors ligne
#4 Thu 06 April 2006 21:34
- Pierre Coroller
- Participant occasionnel
- Date d'inscription: 6 Sep 2005
- Messages: 10
Re: Sélection SQL
Le plus simple est d'opérer en deux temps :
1)déterminer les éléments communs à Table 1 et Table 2
Dans la clause de critère WHERE, indiquer Table1.champx = Table2.champx
2)Inverser la sélection (commande du menu Sélection); vous avez alors les
éléments qui ne sont que dans une des tables
Cordialement
Pierre Coroller
Hors ligne
#5 Fri 07 April 2006 09:04
- benulti
- Participant assidu
- Lieu: là-bas
- Date d'inscription: 5 Sep 2005
- Messages: 332
Re: Sélection SQL
Bonjour,
Compte tenu de ses caprices il vaut mieux dire à MI where table1.champx=table2.champx puis dans la fenêtre donnée de table1 inverser la sélection
Je peux bien des précisions sur ces "caprices"... parce que je pensais pas le sql pouvait avoir un comportement aléatoire..
Hors ligne
#6 Fri 07 April 2006 10:03
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Sélection SQL
Je plaisante...MI (ou SQL?) ne trouve pas de lien entre les 2 tables si on utilise 'différent', mais se débrouille très bien si on lui dit 'égal'
On doit pouvoir utiliser aussi select * from table1 where not champx in (select champy from table2)
Toujours utile: http://www.paris-pc-gis.com/MI_Enviro/mie_start.htm et les documents qu'on y trouve, en particulier à la rubrique 'Documents spécifiques'
Hors ligne
#7 Fri 07 April 2006 10:51
- Pierre Coroller
- Participant occasionnel
- Date d'inscription: 6 Sep 2005
- Messages: 10
Re: Sélection SQL
Si tu mets dans critère :
table1.champx table2.champx
tu ne sera pas tellement avancé : pour chaque valeur de X, il va te renvoyer
tous les éléments différents.
Exemple : si table1 a 100 lignes et table2 80 lignes (avec tous les éléments
de table2 présents dans table1), le résultat de ta requête sera une table de
100 lignes * 79.
Et tu n'as toujours pas la réponse à ta question (quels éléments de table1
ne sont pas dans table2 ?).
Ce n'est effectivement pas dû un "caprice" du SQL, mais au fait que ta
requête est mal construite pour répondre à la question.
Cordialement
Pierre Coroller
Hors ligne
#8 Fri 07 April 2006 11:44
- benulti
- Participant assidu
- Lieu: là-bas
- Date d'inscription: 5 Sep 2005
- Messages: 332
Re: Sélection SQL
effectivement j'ai répondu trop vite sans réfléchir, la requête peut fonctionner mais pas comme condition de jointure.
Hors ligne