comment faire cette requete [MYSQL] - Programmation
Marsh Posté le 14-06-2001 à 15:08:06
select col1
from table1, table2
where table1.col1<>table2.col2 and table3.col3 = '1'
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.
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é.
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...
Marsh Posté le 14-06-2001 à 16:31:24
Le SELECT imbriqué n'est pas permis en MySQL...
[edit]--Message édité par cvince--[/edit]
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
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')