mysql表中的两个字段之间的数组

时间:2014-10-20 15:25:02

标签: php mysql arrays

我有一张办公室的桌子,涵盖一系列邮政编码最低,邮编最高的邮政编码。另一个表格,其中包含链接到城市名称的zipcodes,

用户搜索城市,数据库返回一个数组,其中每个邮政编码都链接到该城市。然后我希望我的代码使用这个邮政编码数组在office表中搜索,看看是否有任何值适合最大值和最小值。

我们可以说我们搜索了一个返回这些邮政编码的城镇

 $search_string = 25002,25003,25004,25005,25006,25007,25008,25009,25013,25014,    25015,25018,25019,25022,25023,25024,25025,25053,25054,25100,25101,25106,25107,25108,25109,25110,25111,25112,25113,25114,25181,25183,25184

这是我尝试解决方案,认为它有效,但显然只是锻炼第一个价值。

$query = $this->db->prepare("SELECT contacts.id FROM contacts INNER JOIN contacts_postcodes_links ON contacts_postcodes_links.contact = contacts.id WHERE contacts.id != 0 ".$category1." ".$category2." AND :search_string BETWEEN contacts_postcodes_links.minValue AND contacts_postcodes_links.maxValue ORDER BY id DESC ".$limit."");

所以我需要帮助的部分,是否可以做这样的事情?如果没有,我将如何解决这个问题?

my_array BETWEEN contacts_postcodes_links.minValue AND contacts_postcodes_links.maxValue

1 个答案:

答案 0 :(得分:0)

通过在同一个查询中执行所有操作来解决它,

在邮政编码上添加内联接到最小值和最大值,然后过滤邮政编码城市以获取用户输入的城市字符串。

最终结果

 $query = $this->db->prepare("SELECT DISTINCT(contacts.id) FROM contacts
                            INNER JOIN contacts_postcodes_links ON contacts_postcodes_links.contact = contacts.id
                            INNER JOIN postcodes ON postcodes.postcode >= contacts_postcodes_links.minValue AND postcodes.postcode <= contacts_postcodes_links.maxValue
                            WHERE contacts.id != 0 AND contacts.category_1 = :category_1 AND contacts.category_2 = :category_2
                            AND postcodes.city LIKE :search_string
                            ORDER BY id DESC LIMIT ".$options['limit']." OFFSET ".$options['start']."");