Bonjour,
je veux faire une requete INNER JOIN sur ma base en donnant un des SELECT DISTINCT pour que tout ne sois pas recherché a chaque fois par identifiant.
La requete est du type :
Mais il me fait la recherche pour chaque Id qu'il trouve dans la table lot.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 (" SELECT DISTINCT * FROM `lot` INNER JOIN (SELECT DISTINCT * FROM programme WHERE programme.Id = lot.Id_programme) WHERE Id_region LIKE 'O' AND Id_fiscalite LIKE 'ROB' AND Id_genre LIKE 'APPA' AND Prix_base BETWEEN '0' AND '200' ")
les tables concernées :
et
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 CREATE TABLE `programme` ( `Id` int(11) NOT NULL auto_increment, `Nom` varchar(255) collate utf8_unicode_ci NOT NULL, `Adresse` varchar(255) collate utf8_unicode_ci default NULL, `Cp` varchar(5) collate utf8_unicode_ci NOT NULL, `Ville` varchar(70) collate utf8_unicode_ci NOT NULL, `Id_region` varchar(5) collate utf8_unicode_ci NOT NULL, `Date_comm` varchar(255) collate utf8_unicode_ci default NULL, `Date_livraison` varchar(255) collate utf8_unicode_ci default NULL, `Date_signature` varchar(255) collate utf8_unicode_ci default NULL, `Id_fiscalite` varchar(5) collate utf8_unicode_ci NOT NULL, `Presentation` text collate utf8_unicode_ci, `Photo_0` varchar(255) collate utf8_unicode_ci default NULL, `Photo_1` varchar(255) collate utf8_unicode_ci default NULL, `Photo_2` varchar(255) collate utf8_unicode_ci default NULL, UNIQUE KEY `Id` (`Id`), KEY `id_region` (`Id_region`), KEY `id_fiscalite` (`Id_fiscalite`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
La fonction :
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 CREATE TABLE `lot` ( `Id` int(11) NOT NULL auto_increment, `Id_programme` int(11) NOT NULL, `Code` varchar(10) collate utf8_unicode_ci NOT NULL, `Etage` int(2) default NULL, `Rentabilite` float default NULL, `Id_genre` varchar(5) collate utf8_unicode_ci NOT NULL, `Id_orientation` varchar(5) collate utf8_unicode_ci NOT NULL, `Id_type` varchar(5) collate utf8_unicode_ci NOT NULL, `Surface_total` float default NULL, `Surface_hab` float default NULL, `Prix_base` float default NULL, `Prix_pack2` float default NULL, `Loyer_mensuel` float default NULL, `Loyer_borloo` float default NULL, `Loyer_robien` float default NULL, `Infos_supp` text collate utf8_unicode_ci NOT NULL, `Id_etat` enum('signature','uncom','option','fax','reserv','disponible') collate utf8_unicode_ci NOT NULL default 'disponible', `Date_chgmt_etat` datetime default NULL, `Livraison` varchar(255) collate utf8_unicode_ci default NULL, `Id_vendeur` int(11) NOT NULL, `Nom_vendeur` varchar(255) collate utf8_unicode_ci default NULL, `Acheteur` varchar(255) collate utf8_unicode_ci default NULL, PRIMARY KEY (`Id`), KEY `id_programme` (`Id_programme`), KEY `id_genre` (`Id_genre`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
[php]function Lister_Lots($Option1,$Option2,$Option3,$Prix_min,$Prix_max)
{
$Req_Liste_Lot = mysql_query("
SELECT * FROM `lot`
INNER JOIN programme ON (programme.Id = lot.Id_programme)
WHERE Id_region LIKE '".$Option2."'
AND Id_fiscalite LIKE '".$Option1."'
AND Id_genre LIKE '".$Option3."'
AND Prix_base BETWEEN '".$Prix_min."'
AND '".$Prix_max."' ") or die(mysql_error());
while($Array_Liste_Lot = mysql_fetch_array($Req_Liste_Lot))
{
?>
<tr>
<td><?php echo $Array_Liste_Lot['Cp']; ?></td>
<td><?php echo $Array_Liste_Lot['Ville']; ?></td>
<td><?php echo $Array_Liste_Lot['Id']; ?></td>
<td><?php echo $Array_Liste_Lot['Id_type']; ?></td>
<td><?php echo $Array_Liste_Lot['Id_genre']; ?></td>
<td><?php echo $Array_Liste_Lot['Etage']; ?></td>
<td><?php echo $Array_Liste_Lot['Id_etat']; ?></td>
<td><?php echo $Array_Liste_Lot['Prix_base']; ?></td>
<td><?php echo $Array_Liste_Lot['Loyer_mensuel']; ?></td>
</tr>
<?php
}
}[/php]
EDIT REPONSE TROUVER
j'avais omis de faire les groupes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT * FROM `lot` INNER JOIN programme ON (programme.Id = lot.Id_programme) WHERE Id_region LIKE '".$Option2."' AND Id_fiscalite LIKE '".$Option1."' AND Id_genre LIKE '".$Option3."' AND Prix_base BETWEEN '".$Prix_min."' AND '".$Prix_max."' GROUP BY Id_programme
Partager