Bonsoir,
jusque là, j'avais une utilisation simple de PhpEcho (du genre, on fait un select * d'une table, puis FetchAll, et enfin on affiche avec PhpEcho le contenu de la table). Mon nouveau besoin est plus complexe. On a 2 tables : une table Users et une table Sites. La table Users contient une colonne id_site et la première colonne de la table Sites porte le même nom.
La table Sites est toute simple :
Code sql : 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 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; ++++++++++++++++++++++++++++ -- -- Déchargement des données de la table `site` -- INSERT INTO `site` (`id_site`, `name`, `id_country`) VALUES (1, '38TEC', 1), (2, 'PLM', 1), (3,'Frankin',3);
La table Users un peu moins :
Le besoin serait, pour chaque utilisateur enregistré dans la table Users d'afficher la valeur des 5 premières colonnes et d'afficher le name dans la table Sites identifié par la colonne id_site.
Code sql : 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
18
19 DROP TABLE IF EXISTS `users`; CREATE TABLE IF NOT EXISTS `users` ( `sesa` 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, `sesa_manager` varchar(10) 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; -- -- Déchargement des données de la table `users` -- INSERT INTO `users` (`sesa`, `lastname`, `firstname`, `email`, `sesa_manager`, `id_site`) VALUES ('SESA13274', 'L--', 'M--', 'm-.l--@se.com', '', 3), ('SESA27384', 'S--', 'L--', 'l--.s--@se.com', 'SESA--', 2), ('SESA487755', 'B--', 'O--', 'o--.b--@se.com', 'SESA--', 2);
Petit exemple : considérons le 2e enregistrement de la table Users (('SESA27384', 'S--', 'L--', 'l--.s--@se.com', 'SESA--', 2)). Il est clair que cet utilisateur appartient au site tel que id_site=2 donc PLM. La question est quelle est la requête SQL qui permettrait d'obtenir cette information ?
J'ai bien la requête qui donnerait uniquement le nom du site : SELECT s.name FROM `site` s INNER JOIN `users` u ON u.id_site=s.id_site where sesa='SESA--'mais là, je sais pas faire...
A noter qu'au démarrage de cette discussion, je pensais que mon souci était dans une bonne utilisation de PhpEcho mais je pense qu'il s'agit d'un pur problème de SQL.
Partager