Bonjour,
j'utilise les 3 tables suivantes :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DROP TABLE IF EXISTS `users`; CREATE TABLE IF NOT EXISTS `users` ( `id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `lastname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `firstname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `id_site` tinyint(2) NOT NULL, PRIMARY KEY (`sesa`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DROP TABLE IF EXISTS `site`; CREATE TABLE IF NOT EXISTS `site` ( `id_site` tinyint(2) NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8_bin NOT NULL, `id_country` tinyint(2) NOT NULL, PRIMARY KEY (`id_site`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DROP TABLE IF EXISTS `country`; CREATE TABLE IF NOT EXISTS `country` ( `id_country` tinyint(2) NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8_bin NOT NULL, `region` varchar(20) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id_country`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
J'ai fait une requête pas piquée des hannetons (c'est mon expression ) :dont l'objet est d'afficher la liste des utilisateurs de la table users avec 4 informations (SESA (un identifiant), firstname, lastname et email), leur site et le pays du site, et enfin nom et prénom du manager.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT u.sesa,u.lastname,u.firstname,u.email, s.name AS 'name_site',c.name AS 'country',u2.firstname AS 'manager_firstname',u2.lastname AS 'manager_lastname' FROM `users` u INNER JOIN `site` s ON u.id_site = s.id_site INNER JOIN `country` c ON s.id_country = c.id_country INNER JOIN `users` u2 ON u.sesa_manager = u2.sesa
Ce que je ne comprends pas, c'est que ça me retourne que 2 lignes alors qu'il y a 3 enregistrements dans la table users. Sur l'un de ces 3 enregistrements, la colonne sesa_manager n'est pas renseignée et il se trouve que cet enregistrement n'apparaît pas dans la réponse à la requête. Quelle est la raison ?
Pour info, contenu de la table users :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO `users` (`sesa`, `lastname`, `firstname`, `email`, `sesa_manager`, `id_site`) VALUES ('SESA--', 'L--', 'Mei', 'mei.l--@se.com', '', 3), ('SESA--', 'S--', 'Laurent', 'laurent.s--@se.com', 'SESA--', 2), ('SESA--', 'B--', 'Olivier', 'olivier.b--@se.com', 'SESA--', 2);
et la réponse à la requête :
Partager