[MYSQL] comment faire cette requete

comment faire cette requete [MYSQL] - Programmation

Marsh Posté le 14-06-2001 à 14:41:34    

Salut ! Tout est dans le titre...
 
select col1
from table1
where col1 not in (select col2 from table2 where col3 = '1')

Reply

Marsh Posté le 14-06-2001 à 14:41:34   

Reply

Marsh Posté le 14-06-2001 à 15:08:06    

select col1  
from table1, table2  
where table1.col1<>table2.col2 and table3.col3 = '1'


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 14-06-2001 à 16:15:23    

Mara's dad a écrit a écrit :

select col1  
from table1, table2  
where table1.col1<>table2.col2
and table2.col3 = '1'




 
Tout à fait d'accord, mais il faut dans ce cas précis qu'il existe au moins une ligne dans table2 qui corresponde à clo3='1', sinon, aucune ligne n'est retournée.

Reply

Marsh Posté le 14-06-2001 à 16:20:22    

Ok...
 
J'ai 3 tables :
 - USER (user_id)
 - PROJECT(project_id)
 - HABILITATION(user_id, project_id)
 
La table HABILITATION est une table de liaison entre USER et PROJECT.
 
Je veux séléctioner tout les users qui n'ont pas d'habilitation à projet donné.

Reply

Marsh Posté le 14-06-2001 à 16:25:39    

select * from USER
 from USER
 where user_id not in
   (select distinct user_id from habilitation
     where project_id = X)
 
Le NOT IN n'est pas terrible du point de vue perf., mais reste très pratique sur des petites tables. Sinon si les tables sont vraiment très grosses, peut-être serat-ce préférable d'utiliser un NOT EXISTS...

Reply

Marsh Posté le 14-06-2001 à 16:31:24    

Le SELECT imbriqué n'est pas permis en MySQL...

 

[edit]--Message édité par cvince--[/edit]

Reply

Marsh Posté le 14-06-2001 à 16:57:54    

Voila la réponse...
 
select u.user_id
from user u left outer join habilitation h
on u.user_id = h.user_id
and h.project_id = 1
where h.user_id is null

Reply

Sujets relatifs:

Leave a Replay

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