Se connecter avec
S'enregistrer | Connectez-vous

Requetes sur plusieurs tables

Dernière réponse : dans Programmation

Bonjour à tous,

je suis débutant en Mysql. J essaye (à titre d'exercice) de faire un site d'agence immobilière. J'ai donc créé une base de données comportant les tables suivantes : biens, type_biens(=Maison, appartement, studio…), statut_bien (=a vendre, vendu, a louer, loué…), link_statut(permettant de faire la liaison entre biens et statut_bien) et communes.

Je souhaites afficher toutes les maisons à vendre et afficher la commune correspondante. J'arrive sans problème à afficher les maisons à vendre mais lorsque je lui demande d'afficher également la commune correspondant au bien, pour tous les biens, il m'affiche toutes les communes. Pour faire plus simple, si j'ai 4 biens de 4 communes différentes, au lieu de m'afficher les 4 biens avec leur commune respective, il m'affiche 4 X 4 soit 16 biens.

J'ai essayé avec des sous-requêtes, avec une table temporaire (càd mettre le résultat dans une table et pour chaque élément de cette table afficher la commune) mais ça ne marche pas.

Quelqu'un aurait une idée?

Voici ci-dessous la construction de ma base de données.

Merci de m'avoir lu et d'avance merci à tous ceux qui m'apporteront leur aide.
  1. DROP TABLE IF EXISTS `biens`;
  2.  
  3. CREATE TABLE `biens` (
  4. `id_biens` int(11) NOT NULL AUTO_INCREMENT,
  5. `adresse` varchar(250) NOT NULL,
  6. `pays` varchar(70) NOT NULL DEFAULT 'Belgique',
  7. `prix` mediumint(25) NOT NULL,
  8. `description` text NOT NULL,
  9. `code_bien` char(11) NOT NULL,
  10. PRIMARY KEY (`id_biens`)
  11. ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
  12.  
  13. LOCK TABLES `biens` WRITE;
  14. /*!40000 ALTER TABLE `biens` DISABLE KEYS */;
  15. INSERT INTO `biens` (`id_biens`,`adresse`,`pays`,`prix`,`description`,`code_bien`)
  16. VALUES
  17. (1,'Avenue du Parc','Belgique',213000,'Jolie Petite maison d\'habitation','10'),
  18. (2,'Rue des Sciences','Belgique',275000,'Splendide Villa 4 facades','20'),
  19. (3,'Avenue de la piscine','Belgique',543000,'Immeuble de rapport avec nombreux garages','10'),
  20. (4,'Chausse d\'Hacht','Belgique',123000,'Appartement 2 chambres','30'),
  21. (5,'Rue de la fontaine','Belgique',321000,'Maison à restaurer','30');
  22.  
  23. /*!40000 ALTER TABLE `biens` ENABLE KEYS */;
  24. UNLOCK TABLES;
  25.  
  26.  
  27. # Dump of table communes
  28. # ------------------------------------------------------------
  29.  
  30. DROP TABLE IF EXISTS `communes`;
  31.  
  32. CREATE TABLE `communes` (
  33. `id_commune` int(11) NOT NULL AUTO_INCREMENT,
  34. `code_postal` mediumint(5) NOT NULL,
  35. `ville` varchar(75) NOT NULL,
  36. `commune` varchar(75) NOT NULL,
  37. `langue` varchar(2) NOT NULL,
  38. PRIMARY KEY (`id_commune`),
  39. KEY `code_postal` (`code_postal`),
  40. KEY `ville` (`ville`),
  41. KEY `commune` (`commune`)
  42. ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
  43.  
  44. LOCK TABLES `communes` WRITE;
  45. /*!40000 ALTER TABLE `communes` DISABLE KEYS */;
  46. INSERT INTO `communes` (`id_commune`,`code_postal`,`ville`,`commune`,`langue`)
  47. VALUES
  48. (1,1000,'Bruxelles','Bruxelles','FN'),
  49. (2,1000,'Bruxelles','Laeken (Bru.)','FN'),
  50. (3,1000,'Bruxelles','Neder-over-Heembeek (Bru.)','FN'),
  51. (4,1000,'Bruxelles','Haren (Bru.)','FN'),
  52. (5,1030,'Bruxelles','Schaerbeek','FN'),
  53. (6,1040,'Bruxelles','Etterbeek','FN'),
  54. (7,1050,'Bruxelles','Ixelles','FN'),
  55. (8,1060,'Bruxelles','Saint-Gilles','FN'),
  56. (9,1070,'Bruxelles','Anderlecht','FN'),
  57. (10,1080,'Bruxelles','Molenbeek-Saint-Jean','FN'),
  58. (11,1081,'Bruxelles','Koekelberg','FN'),
  59. (12,1082,'Bruxelles','Berchem-Sainte-Agathe','FN'),
  60. (13,1083,'Bruxelles','Ganshoren','FN'),
  61. (14,1090,'Bruxelles\n','Jette','FN'),
  62. (15,1140,'Bruxelles','Evere','FN'),
  63. (16,1150,'Bruxelles','Woluwe-Saint-Pierre','FN'),
  64. (17,1160,'Bruxelles','Auderghem','FN'),
  65. (18,1170,'Bruxelles','Watermael-Boitsfort','FN'),
  66. (19,1180,'Bruxelles','Uccle','FN'),
  67. (20,1190,'Bruxelles','Forest','FN'),
  68. (21,1200,'Bruxelles','Woluwe-Saint-Lambert','FN'),
  69. (22,1210,'Bruxelles','Saint-Josse-ten-Noode','FN');
  70.  
  71. /*!40000 ALTER TABLE `communes` ENABLE KEYS */;
  72. UNLOCK TABLES;
  73.  
  74.  
  75. # Dump of table link_communes
  76. # ------------------------------------------------------------
  77.  
  78. DROP TABLE IF EXISTS `link_communes`;
  79.  
  80. CREATE TABLE `link_communes` (
  81. `id_biens` int(11) NOT NULL,
  82. `code_postal` mediumint(5) NOT NULL
  83. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  84.  
  85. LOCK TABLES `link_communes` WRITE;
  86. /*!40000 ALTER TABLE `link_communes` DISABLE KEYS */;
  87. INSERT INTO `link_communes` (`id_biens`,`code_postal`)
  88. VALUES
  89. (1,5),
  90. (2,6),
  91. (3,1),
  92. (4,5),
  93. (5,1);
  94.  
  95. /*!40000 ALTER TABLE `link_communes` ENABLE KEYS */;
  96. UNLOCK TABLES;
  97.  
  98.  
  99. # Dump of table link_statut
  100. # ------------------------------------------------------------
  101.  
  102. DROP TABLE IF EXISTS `link_statut`;
  103.  
  104. CREATE TABLE `link_statut` (
  105. `id_biens` mediumint(11) NOT NULL,
  106. `code_statut` char(5) NOT NULL
  107. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  108.  
  109. LOCK TABLES `link_statut` WRITE;
  110. /*!40000 ALTER TABLE `link_statut` DISABLE KEYS */;
  111. INSERT INTO `link_statut` (`id_biens`,`code_statut`)
  112. VALUES
  113. (1,'10'),
  114. (2,'20'),
  115. (3,'10'),
  116. (4,'30'),
  117. (5,'10');
  118.  
  119. /*!40000 ALTER TABLE `link_statut` ENABLE KEYS */;
  120. UNLOCK TABLES;
  121.  
  122.  
  123. # Dump of table statut_bien
  124. # ------------------------------------------------------------
  125.  
  126. DROP TABLE IF EXISTS `statut_bien`;
  127.  
  128. CREATE TABLE `statut_bien` (
  129. `id_statut` int(11) NOT NULL AUTO_INCREMENT,
  130. `code_statut` char(5) NOT NULL,
  131. `statut_bien` varchar(50) NOT NULL,
  132. PRIMARY KEY (`id_statut`)
  133. ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
  134.  
  135. LOCK TABLES `statut_bien` WRITE;
  136. /*!40000 ALTER TABLE `statut_bien` DISABLE KEYS */;
  137. INSERT INTO `statut_bien` (`id_statut`,`code_statut`,`statut_bien`)
  138. VALUES
  139. (1,'10','a vendre'),
  140. (2,'15','vendu'),
  141. (3,'20','a louer'),
  142. (4,'25','loue');
  143.  
  144. /*!40000 ALTER TABLE `statut_bien` ENABLE KEYS */;
  145. UNLOCK TABLES;
  146.  
  147.  
  148. # Dump of table type_biens
  149. # ------------------------------------------------------------
  150.  
  151. DROP TABLE IF EXISTS `type_biens`;
  152.  
  153. CREATE TABLE `type_biens` (
  154. `id_type_biens` int(11) NOT NULL AUTO_INCREMENT,
  155. `code_bien` char(11) NOT NULL,
  156. `type_bien` varchar(50) NOT NULL,
  157. PRIMARY KEY (`id_type_biens`)
  158. ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
  159.  
  160. LOCK TABLES `type_biens` WRITE;
  161. /*!40000 ALTER TABLE `type_biens` DISABLE KEYS */;
  162. INSERT INTO `type_biens` (`id_type_biens`,`code_bien`,`type_bien`)
  163. VALUES
  164. (1,'10','Maison'),
  165. (2,'20','Appartement'),
  166. (3,'30','Studio'),
  167. (4,'40','Magasin'),
  168. (5,'50','Bureau');
  169.  
  170. /*!40000 ALTER TABLE `type_biens` ENABLE KEYS */;
  171. UNLOCK TABLES;

Autres pages sur : requetes plusieurs tables

Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte