1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| -- Structure de la table `test_documents`
DROP TABLE IF EXISTS `test_documents`;
CREATE TABLE IF NOT EXISTS `test_documents` (
`id` int(10) NOT NULL auto_increment,
`contenu` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
-- Structure de la table `test_images`
DROP TABLE IF EXISTS `test_images`;
CREATE TABLE IF NOT EXISTS `test_images` (
`id` int(10) unsigned NOT NULL auto_increment,
`nom` text NOT NULL,
`docid` int(10) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- Structure de la table `test_template_variables`
DROP TABLE IF EXISTS `test_template_variables`;
CREATE TABLE IF NOT EXISTS `test_template_variables` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- Structure de la table `test_variables`
DROP TABLE IF EXISTS `test_variables`;
CREATE TABLE IF NOT EXISTS `test_variables` (
`id` int(11) NOT NULL auto_increment,
`valeur` text,
`tmplvarid` int(10) NOT NULL default '0',
`docid` int(10) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- test3: Seule une image contient "russie" et "vodka"
--
INSERT INTO `test_documents` (`id`, `contenu`) VALUES
(1, 'Voyage au pays du tsar'),
(2, 'Solitudes du Gobi'),
(3, 'Derrière la grande muraille');
INSERT INTO `test_images` (`id`, `nom`, `docid`) VALUES
(1, 'Poupées russes', 1),
(2, 'Vodka de Russie', 1),
(3, 'Souzdal', 2),
(4, 'place rouge', 2),
(5, 'Cité interdite', 3),
(6, 'Armée de terre cuite', 3);
INSERT INTO `test_variables` (`id`, `valeur`, `tmplvarid`, `docid` ) VALUES
(1, 'Corée', 1, 1),
(2, 'Transsibérien et vodka', 2, 1),
(3, 'Mongolie', 1, 2),
(4, 'Lénine', 2, 2),
(5, 'Chine', 1, 3),
(6, 'Révolution culturelle', 2, 3);
INSERT INTO `test_template_variables` (`id`, `name`) VALUES
(1, 'motcle1'),
(2, 'motcle2');
SELECT d.id, d.contenu,
GROUP_CONCAT( DISTINCT v.valeur ORDER BY v.valeur SEPARATOR ", " ) AS v_valeur,
GROUP_CONCAT( DISTINCT i.nom ORDER BY i.nom SEPARATOR ", " ) AS i_nom
FROM test_documents d
INNER JOIN test_variables v ON d.id = v.docid
INNER JOIN test_images i ON d.id = i.docid
INNER JOIN test_template_variables tv ON tv.id = v.tmplvarid
WHERE tv.name <> 'motcle2' AND
(
((v.valeur LIKE '%russie%') OR (v.valeur LIKE '%vodka%')) OR
((i.nom LIKE '%russie%') OR (i.nom LIKE '%vodka%'))
)
GROUP BY d.id
HAVING (
v_valeur LIKE '%russie%' OR i_nom LIKE '%russie%' OR d.contenu LIKE '%russie%'
) AND (
v_valeur LIKE '%vodka%' OR i_nom LIKE '%vodka%' OR d.contenu LIKE '%vodka%'
) |