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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 14 May 2008 15:33

sarahmil
Participant actif
Date d'inscription: 2 Oct 2005
Messages: 56

selection entre deux tables

Bonjour,

Je dois comparer deux tables contenant chacunes des "équipements"

Si des équipements se trouvent dans la table 1 et non dans la table 2 cela signifie qu'ils n'existent plus
Si des équipements se trouvent dans la table 2 et non dans la table 1 cela signifie qu'ils ont été créé

J'aimerais traduire ça en MapBasic...mais j'ai un peu de mal

J'ai essayé:

Select * from table1,table2 where not(table1.Id=table2.Id) mais étant donné que si les identifiants ne sont pas égaux cela veut dire qu'ils n'existent pas dans l'autre table, et bien ma requête ne fonctionne pas!

J'aurais pu selectionner les identifiant identiques et inverser la selection, mais je n'ai pas trouvé comment traduire "inverser la selection" en MapBasic!

Merci pour votre aide!

Hors ligne

 

#2 Wed 14 May 2008 16:52

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: selection entre deux tables

Je pense que tu devrais passer par deux listes remplit chacune par un des champs et tester si pour un element compris entre i et ubound(liste1) il y'a une correspondance dans la seconde liste et vice versa avec un afficahge de message pour l'un et l'autre des cas...
En tout cas c'est comme ca que je vois les choses mais pour etre plus précis par quoi sont caractérisé tes équipements ? un code ? un nom unique ou rebarbatif ?

Hors ligne

 

#3 Wed 14 May 2008 16:58

greg-gwened
Participant actif
Lieu: Vannes
Date d'inscription: 4 Oct 2007
Messages: 148

Re: selection entre deux tables

Peut etre quelque chose du genre:

Pour les equipements qui n'existe plus:
SELECT table1.* FROM table1 WHERE table1.id NOT IN (SELECT id FROM table2)

Pour les équipements créés:
SELECT table2.* FROM table2 WHERE table2.id NOT IN (SELECT id FROM table1)

Hors ligne

 

#4 Wed 14 May 2008 17:35

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: selection entre deux tables

Précision pour corriger légèrement la syntaxe de greg-gwened (et à la condition que les champ id soit bien un identifiant unique)

Pour les équipements qui n'existent plus:
SELECT * FROM table1 WHERE NOT id IN (SELECT id FROM table2)

Pour les équipements créés:
SELECT * FROM table2 WHERE NOT id IN (SELECT id FROM table1)

Hors ligne

 

#5 Thu 15 May 2008 09:01

sarahmil
Participant actif
Date d'inscription: 2 Oct 2005
Messages: 56

Re: selection entre deux tables

OUIIIIIIIII ces formules marchent très bien!
Merci beaucoup

Sarah

Hors ligne

 

Pied de page des forums

Powered by FluxBB