[MySQL] Jointure entre 2 tables
Posté : 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
Les tables :
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
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