[英]PHP MySql help with complex Multiple table Query
我在MySql中为社区存储了一堆数据
我的初始社区表包含以下字段:
然后,我将每个社区的不同数据存储在其他表中,如下所示:
表:community_amenities
表:community_prices
表:社区产品
然后,我得到一个带有许多复选框的表格,让用户可以选择他们感兴趣的便利设施,价格范围和产品,如下所示:
<input name='amenities[]' type='checkbox' value='1'/>
<input name='amenities[]' type='checkbox' value='2'/>
<input name='amenities[]' type='checkbox' value='3'/>
<input name='amenities[]' type='checkbox' value='4'/>
<input name='amenities[]' type='checkbox' value='5'/>
<input name='prices[]' type='checkbox' value='1'/>
<input name='prices[]' type='checkbox' value='2'/>
<input name='prices[]' type='checkbox' value='3'/>
<input name='prices[]' type='checkbox' value='4'/>
<input name='prices[]' type='checkbox' value='5'/>
所以我的问题是
我需要获取他们从表单中选择的项目,并查询数据库以显示符合条件的社区。
我可以使用以下字段之一来做到这一点:
$priceArray = $_POST['price'];
$selectPrice = join(',',$priceArray);
$sql = mysql_query("SELECT * FROM community_prices WHERE prices IN ($selectPrice)");
但是我需要对所有表进行处理,并且只需要返回符合所有选定条件的社区。
我尝试了很多不同的方法(UNION,JOIN),但是没有运气。 任何帮助将不胜感激。
因此,您想要所有符合给定价格,便利性和产品标准的社区吗? 所有这些假设都是基于您在示例中列出的IN语句将创建有效匹配的假设。
$priceArray = $_POST['prices'];
$amenityArray = $_POST['amenities'];
$productArray = $_POST['products'];
$prices = join(',',$priceArray);
$amenities = join(',',$amenityArray);
$products = join(',',$productArray);
$sql = "SELECT c.* ";
$sql .= "FROM communities c ";
$sql .= " INNER JOIN community_amenities ca ON c.id = ca.community ";
$sql .= " INNER JOIN community_prices cpri ON c.id = cpri.community ";
$sql .= " INNER JOIN community_products cpro ON c.id = cpro.community ";
$sql .= "WHERE ca.amenity IN ($amenities) ";
$sql .= "AND cpri.price IN ($prices) ";
$sql .= "AND cpro.product IN ($products) ";
$result = mysql_query($sql);
显然,您需要调整我弄错的任何表/列名称。 您还应该添加条件逻辑以仅介绍特定查询所需的INNER JOIN和WHERE条件。 例如,如果用户未选择舒适度作为标准,则不包括舒适度的“内部联接”或“位置”条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.