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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| --------------
SET AUTOCOMMIT = 0
--------------
--------------
START TRANSACTION
--------------
--------------
DROP DATABASE IF EXISTS `base`
--------------
--------------
CREATE DATABASE `base`
DEFAULT CHARACTER SET `latin1`
DEFAULT COLLATE `latin1_general_ci`
--------------
--------------
DROP TABLE IF EXISTS `tabtwo`
--------------
--------------
CREATE TABLE `tabtwo`
( `categorie` tinyint unsigned NOT NULL primary key,
`libelle` varchar(255) NOT NULL
) ENGINE=InnoDB
DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
ROW_FORMAT=COMPRESSED
--------------
--------------
insert into `tabtwo` (`categorie`,`libelle`) values
(1, 'femme'),
(2, 'homme')
--------------
--------------
select * from `tabtwo`
--------------
+-----------+---------+
| categorie | libelle |
+-----------+---------+
| 1 | femme |
| 2 | homme |
+-----------+---------+
--------------
DROP TABLE IF EXISTS `tabone`
--------------
--------------
CREATE TABLE `tabone`
( `id` integer unsigned NOT NULL auto_increment primary key,
`nom` varchar(255) NOT NULL,
`categorie` tinyint unsigned NOT NULL,
`position` tinyint unsigned NOT NULL,
CONSTRAINT `FK_tabtwo` FOREIGN KEY (`categorie`) REFERENCES `tabtwo` (`categorie`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
ROW_FORMAT=COMPRESSED
--------------
--------------
insert into `tabone` (`nom`,`categorie`,`position`) values
('tata', 1, 1),
('toto', 2, 2),
('titi', 2, 3),
('tutu', 1, 4)
--------------
--------------
select * from `tabone`
--------------
+----+------+-----------+----------+
| id | nom | categorie | position |
+----+------+-----------+----------+
| 1 | tata | 1 | 1 |
| 2 | toto | 2 | 2 |
| 3 | titi | 2 | 3 |
| 4 | tutu | 1 | 4 |
+----+------+-----------+----------+
--------------
select t1.nom, t2.libelle
from tabone as t1
inner join tabtwo as t2
on t2.categorie = t1.categorie
where t1.position > 0
--------------
+------+---------+
| nom | libelle |
+------+---------+
| tata | femme |
| tutu | femme |
| toto | homme |
| titi | homme |
+------+---------+
--------------
select t1.nom, t2.libelle
from tabone as t1
inner join tabtwo as t2
on t2.categorie = t1.categorie
where t1.position > 0
and case when t1.position > 2 then t2.categorie = 1 else 0 end = 1
--------------
+------+---------+
| nom | libelle |
+------+---------+
| tutu | femme |
+------+---------+
--------------
COMMIT
--------------
--------------
SET AUTOCOMMIT = 1
--------------
Appuyez sur une touche pour continuer... |