[SQL] jointure <> [resolu mais pas normalement]

jointure <> [resolu mais pas normalement] [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 23-05-2005 à 16:43:47    

Bonjour  
 
j'ai un problème pour faire une joiture et c'est pour cela que je sollicite votre aide.
 
j'ai deux tables shematisé ci dessous


|------------|
|nomade_part |
|------------|
|id_per      |
|id_nmd      |
|debut       |
|fin         |
|------------|
 
|------------|
|tmp         |
|------------|
|id_per      |
|id_nmd      |
|debut       |
|fin         |
|------------|


 
J'ai besoin de selection tous les couples (id_per,id_nmd) de ma table tmp qui ne sont pas dans la table nomade
 
J'aimerai faire une requete de ce style:
select t.id_per,t.id_nmd,t.debut,t.fin from tmp t inner join nomade n on n.id_per<>t.id_per and n.id_nmd<>t.id_nmd
 
mais cela selection une table infini
 
merci par avance de votre aide


Message édité par coolben le 24-05-2005 à 09:31:03

---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 23-05-2005 à 16:43:47   

Reply

Marsh Posté le 23-05-2005 à 16:53:12    

Comme les tables sont identiques, je tenterais bien une formule du type SELECT * from tmp EXCEPT SELECT * from nomade


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le 23-05-2005 à 16:59:23    

je viens d'essayer et cela ne marche pas
il n'aime pas a partir de except


---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 23-05-2005 à 17:22:49    

c quoi ton sgbd ?  
ca pourrait aider déjà de dire avec quoi tu travailles ....

Reply

Marsh Posté le 24-05-2005 à 09:08:02    

Je travaille sur SQL server 2000 mais je ne vois pas ce que cela change car la requete est en SQL.


Message édité par coolben le 24-05-2005 à 09:08:46

---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 24-05-2005 à 09:30:04    

J'ai trouvé mais je ne suis pas sure que cela soir la facon la plus propre  
voici ma requete :
 


select * from tmp where id_per*10+id_nmd not in (select id_per*10+id_nmd from nomade_part)


 
merci pour votre aide
 :hello:


---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 24-05-2005 à 11:29:44    

coolben a écrit :

Je travaille sur SQL server 2000 mais je ne vois pas ce que cela change car la requete est en SQL.


ca change car la clause not in(select) n'est pas implémentée dans certaines versions de mysql par exemple...

Reply

Marsh Posté le 27-05-2005 à 21:51:32    

Si le SGBD accepte le EXISTS :
 
select *
from tmp
where not exists (
select 1
from nomade_part np
where np.id_per = tmp.id_per
and np.id_nmd = tmp.id_nmd);
 
Sinon jointure externe : (exemple mysql)
 
select *
from tmp
left join nomade_part np on np.id_per = tmp.id_per and np.id_nmd = tmp.id_nmd
where tmp.id_per is null;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed