基于另一个表行比较MySQL表中的值

时间:2011-10-17 15:55:52

标签: php mysql cakephp comparison

我正在开发CakePHP中的应用程序系统。每个申请都包含申请人的地址和(仅限英国)邮政编码。

客户希望能够将“邮政编码区域”分配给其团队的特定成员。 不幸的是,邮政编码区域的格式和长度各不相同 - 示例:TATQ1S60BS22TA6 4EJ

如果需要,用户希望能够在每个用户的基础上指定整个区域或更具体的区域。 schema

我需要能够获取每个prefix并将其与每个应用程序的postcode进行比较,并返回任何匹配项。


用户Ross使用以BQ开头的邮政编码管理应用程序。 BSS60

用户Dave管理包含完整邮政编码的应用:BS22 4JLTA6 7EJ


我认为最好的方法是拥有一个充满用户定义的邮政编码前缀的表格:

   id  |  prefix
    1  |      TQ
    2  |      TL
    3  |     S50
    4  |     S55
    5  | TA6 4EJ

为每个用户分配一个邮政编码区域进行管理。

我在想如果我可以将每个应用程序的邮政编码与每个前缀进行比较,我可以检索给定邮政编码区域中的所有应用程序,然后查找该用户所属的用户。

id | postcode
1  |  tq33 abc
2  |  TL5  8HA
3  |  s50 11l

不幸的是,邮政编码数据不是任何标准/常规格式;所以这可能会变得棘手。 听起来我需要JOIN prefix对邮政编码;但由于没有钥匙,我认为这是不可能的。

prefixpostcode之间没有直接关联。感觉我错过了一些基本的东西

任何指针?

1 个答案:

答案 0 :(得分:1)

尝试:

SELECT users.name, app.* from applications app, users, postcodes where app.postcode LIKE CONCAT(postcodes.prefix,'%') AND postcodes.user_id = users.id