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.







Répondre avec citation


Partager