Bonjour,
Je galère sur le SQL (MYSQL) car j'en ai fait très peu jusqu'à présent et je suis bloqué pour récupérer des données présentes sur plusieurs tables qui sont associées entre-elles par des tables associatives. De plus, j'ai beaucoup de mal à trouver mon exemple dans les tutos ou forums.
Voici le schéma des tables en question :
EXPLICATIONS :
Pour comprendre le but, on prend une voie communale : rue du paradis....
le mot 'rue' se trouvera dans la table 'TYPE_VOIE' et le mot 'du paradis' se trouvera dans la table 'NOM_VOIE'.
Dans la table VOIE, j'aurais l'identifiant d'une voie et sa longueur.
La table TYPER_VOIE me sert (normalement) à retrouver quel est le type de la voie pour un identifiant de voie. donc pour mon exemple --> rue
La table NOMMER_VOIE me sert (normalement aussi) à retrouver quel est le nom de la voie pour un identifiant de voie. donc pour mon exemple --> du paradis.
BUT :
je souhaite sélectionner le type et le nom d'une voie à partir de l'identifiant de la voie présent dans la table VOIE.
Pour l'instant, j'arrive à sélectionner le type ou le nom (voir sql ci-dessous) mais mon problème est de faire le lien avec les tables associatives.
Le sql de construction de ma BDD est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT `typeVoie_type` FROM `mairie`.`type_voie` WHERE `mairie`.`type_voie`.`typeVoie_id` = 1;
et voici quelques datas :
Code : 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
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 -- phpMyAdmin SQL Dump -- version 4.2.11 -- http://www.phpmyadmin.net -- Client : 127.0.0.1 -- Généré le : Mer 18 Février 2015 à 15:51 -- Version du serveur : 5.6.21 -- Version de PHP : 5.6.3 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- Base de données : `mairie` CREATE DATABASE IF NOT EXISTS `mairie` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `mairie`; -- Structure de la table `nommer_voie` CREATE TABLE IF NOT EXISTS `nommer_voie` ( `Voie_voie_id` int(11) NOT NULL, `NOM_VOIE_nomVoie_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Structure de la table `nom_voie` CREATE TABLE IF NOT EXISTS `nom_voie` ( `nomVoie_id` int(11) NOT NULL, `nomVoie_nom` varchar(80) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Structure de la table `typer_voie` CREATE TABLE IF NOT EXISTS `typer_voie` ( `Voie_voie_id` int(11) NOT NULL, `TYPE_VOIE_typeVoie_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Structure de la table `type_voie` CREATE TABLE IF NOT EXISTS `type_voie` ( `typeVoie_id` int(11) NOT NULL, `typeVoie_type` varchar(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Structure de la table `voie` CREATE TABLE IF NOT EXISTS `voie` ( `voie_id` int(11) NOT NULL, `voie_long` float DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Index pour la table `nommer_voie` ALTER TABLE `nommer_voie` ADD PRIMARY KEY (`Voie_voie_id`,`NOM_VOIE_nomVoie_id`), ADD KEY `FK_nommer_voie_VOIE` (`Voie_voie_id`), ADD KEY `FK_nommer_voie_NOM_VOIE` (`NOM_VOIE_nomVoie_id`); -- Index pour la table `nom_voie` ALTER TABLE `nom_voie` ADD PRIMARY KEY (`nomVoie_id`); -- Index pour la table `typer_voie` ALTER TABLE `typer_voie` ADD PRIMARY KEY (`Voie_voie_id`,`TYPE_VOIE_typeVoie_id`), ADD KEY `FK_Typer_voie_VOIE` (`Voie_voie_id`), ADD KEY `FK_Typer_voie_TYPE_VOIE` (`TYPE_VOIE_typeVoie_id`); -- Index pour la table `type_voie` ALTER TABLE `type_voie` ADD PRIMARY KEY (`typeVoie_id`); -- Index pour la table `voie` ALTER TABLE `voie` ADD PRIMARY KEY (`voie_id`); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Je vous remercie de bien vouloir m'aider !
Code : 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
20
21
22
23
24
25
26
27
28
29
30 INSERT INTO `mairie`.`type_voie` (`typeVoie_id`, `typeVoie_type`) VALUES ('1', 'rue'), ('2', 'allée'), ('3', 'impasse'), ('4', 'avenue'), ('5', 'chemin'), ('6', 'chemin rural'), ('7', 'route'), ('8', 'place'), ('9', 'square'), ('10', 'rond-point'), ('11', 'carrefour'); INSERT INTO `mairie`.`nom_voie` (`nomVoie_id`, `nomVoie_nom`) VALUES ('1', 'Gérard'), ('2', 'beauciel'), ('3', 'principale'), ('4', 'écoles'); INSERT INTO `mairie`.`voie` (`voie_id`, `voie_long`) VALUES ('1', '0,3'), ('2', null); INSERT INTO `mairie`.`typer_voie` (`Voie_voie_id`, `TYPE_VOIE_typeVoie_id`) VALUES ('1', '3'), ('2', '8'); INSERT INTO `mairie`.`nommer_voie` (`Voie_voie_id`, `NOM_VOIE_nomVoie_id`) VALUES ('1', '2'), ('2', '1');
Partager