0

我有两张桌子,一张称为区域,一张称为覆盖区域。表格区域包含字段邮政编码和地区。

例如:

区域表包含邮政编码- AB10地区- 阿伯丁

涵盖的表格包含id - 1 个邮政编码- AB10日期- 1364989057

现在我有一个搜索邮政编码或地区的表格。我正在使用 JQuery 的自动完成功能,可以获取邮政编码或地区,但不能同时获取两者。

目前我有:

$result = $db->query("SELECT DISTINCT `postcode` FROM `areaCovered` WHERE `postcode` LIKE '%$search%' ORDER BY `postcode` ASC") or die('Something went wrong');

然后我使用从数据库结果中检索到的数据并放入 JSON:

$json = '[';
$first = true;
while ($row = $result->fetch_assoc())
{
    if (!$first) { $json .=  ','; } else { $first = false; }
    $json .= '{"value":"'.$row['postcode'].'"}';
}
$json .= ']';
echo $json;

如何首先连接两个表以搜索仅存在于区域覆盖表中的邮政编码或地区,然后输出结果是地区还是邮政编码。

我希望这对你有意义,

谢谢

4

1 回答 1

1

而不是distinct你应该使用group by, 并加入他们。

类似的东西:

select
    a.`postcode` as postcode,
    a.`region` as region,
from
    `area` as a
    inner join
        `areaCovered` as ac
    on
        a.`postcode`=ac.`postcode`
where
    a.`postcode` like '%$search%'
    or
    a.`region` like '%$search%'
group by
    a.`postcode`
order by
    a.`postcode` asc

最好我只是json_encode()整个结果集并在客户端解析它,但看起来您可能需要为 jQuery 插件提供特殊的 JSON 结构?

$list = array();
while ($row = $result->fetch_assoc()) {
    array_push(
        $list,
        array('value' => $row['postcode'] . ', ' . $row['region'])
    );
}

echo json_encode($list);

这将创建一个 JSON 结构,如下所示;

[
    {
        "value": "123 45, Region 1"
    },
    {
        "value": "678 90, Region 2"
    },
    ...
]
于 2013-04-16T12:10:18.440 回答