Salut,
j'ai une table Mysql :
je veux recupere toutes les enregistrements dont le type = "type1" et la langue = 2 (premier condition),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 CREATE TABLE IF NOT EXISTS `maTable` ( `id` int(10) unsigned NOT NULL auto_increment, `type` enum('type1','type2','type3','type4') collate utf8_bin NOT NULL, `idLangue` tinyint(3) unsigned NOT NULL default '1', `idReference` int(10) unsigned default NULL, PRIMARY KEY (`id`), KEY `idLangue` (`idLangue`), KEY `idReference` (`idReference`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- -- Contraintes pour la table `maTable` -- ALTER TABLE `maTable` ADD CONSTRAINT `maTable_ibfk_5` FOREIGN KEY (`idReference`) REFERENCES `maTable` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
et toutes les enregistrements dont la langue != 2 + idReference est null et que leurs ids != idReference des enregistrements retourné par la 1er condition
j'ai essayé avec :
mais je prefere d'utilise la jointure (autojointure)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT * FROM `maTable` WHERE (idLangue = 2 and type = "type1") OR (idLangue != 2 and idReference is NULL and type = "type1" and id not in (select idReference from `maTable` where (idLangue = 2 and type = "type1")) )
merci de m'aider
Partager