Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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

Maurice Nadal a écrit:

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

 

Pied de page des forums

Powered by FluxBB