[MySQL] Jointure entre 2 tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [MySQL] Jointure entre 2 tables

[MySQL] Jointure entre 2 tables

par Invité » 23 juin 2006, 10:56

Bonjour a tous,

Je souhaite faire une jointure entre 2 tables :

Imaginons ....

1°) Je suis IdClient = 1
Le but est de retourner toutes les lignes de la table "_Test_affaires"
car aucune ligne ne contient un IdClient = 1 dans la table "_Test_AlertesExclu"

2°) Je suis IdClient = 2
Le but est de retourner les lignes 1, 2, 4 de la table "_Test_affaires" car :
la ligne IdClient= 2 est dans la table "_Test_AlertesExclu" pour IdExclu = 3
la ligne IdClient= 2 est dans la table "_Test_AlertesExclu" pour IdExclu = 5

_Test_affaires -> listing de id
_Test_AlertesExclu -> listing de IdExclu par un IdClient

sachant que id de _Test_affaires est = à IdExclu de _Test_AlertesExclu

Version MySQL -> MySQL 4.0.16-standard

J'espère avoir été clair ?!

Voici la requete actuelle
 
SELECT _Test_affaires.id,  _Test_AlertesExclu.IdExclu FROM _Test_affaires LEFT JOIN _Test_AlertesExclu ON _Test_affaires.id = _Test_AlertesExclu.IdExclu WHERE ISNULL(_Test_AlertesExclu.IdExclu) 



Les tables :
  
-- Structure de la table `_Test_affaires`  

CREATE TABLE `_Test_affaires` (  
  `id` int(9) unsigned default NULL,  
  `titre_fra` varchar(250) NOT NULL default '',  
  `active` enum('0','1') NOT NULL default '0'  
) TYPE=MyISAM;  

INSERT INTO `_Test_affaires` VALUES (1, 'Ligne N°1', '1');  
INSERT INTO `_Test_affaires` VALUES (2, 'Ligne N°2', '1');  
INSERT INTO `_Test_affaires` VALUES (3, 'Ligne N°3', '1');  
INSERT INTO `_Test_affaires` VALUES (4, 'Ligne N°4', '1');  
INSERT INTO `_Test_affaires` VALUES (5, 'Ligne N°5', '1');  



-- Structure de la table `_Test_AlertesExclu`  

CREATE TABLE `_Test_AlertesExclu` (  
  `IdClient` int(9) NOT NULL default '0',  
  `IdExclu` int(9) NOT NULL default '0',  
  `Date` datetime NOT NULL default '0000-00-00 00:00:00'  
) TYPE=MyISAM;  

INSERT INTO `_Test_AlertesExclu` VALUES (2, 5, '2006-06-22 16:24:53');  
INSERT INTO `_Test_AlertesExclu` VALUES (2, 3, '2006-06-22 16:24:53');  

-- --------------------------------------------------------  

PS :
Cette solution a été proposée, mais cela ne fonctionne pas avec la version MySQL (que je ne peux pas modifier)

Select *
From _Test_affaires
Where id not in (Select IdExclu from _Test_AlertesExclu where IdClient = 2) AND id=2

MERCI BEAUCOUP DE VOTRE AIDE