【问题标题】:need help restructuring a query需要帮助重组查询
【发布时间】:2016-05-23 20:46:48
【问题描述】:

我有一个查询可以很好地用于 twitter typeahead 搜索。它连接了几个字段,以便搜索字符串包含 customer_name、地址、最多 4 个要搜索的电话号码。我目前将客户表的地址部分分为门牌号的 [address] 和街道名称的 [street]。但是,我想实现使用街道表并将街道列替换为 [steeet_id]。我完全无法重组查询以使用 [street_id] 并仍然显示街道名称。下面是运行查询并返回 json 数组的页面。任何帮助将不胜感激。

<?php
if(isset($_POST['query'])) {
    //connect to database
    include 'connect.php';
    //retrieve the query
    $query = $_POST['query'];
    //search database for all similar items
    $sql = mysql_query("SELECT * FROM (
    SELECT customer_id, customer_name, address, street, phone_1, phone_2, phone_3, phone_4, CONCAT(customer_name, ' ', address, ' ', street, ' ', phone_1, ' ', phone_2, ' ', phone_3, ' ', phone_4) as `mysearch`
    FROM customers) base
    WHERE `mysearch` LIKE '%{$query}%'
    ORDER BY customer_name ASC, street ASC, address ASC
    ");
    $array = array();
    while ($row = mysql_fetch_assoc($sql)) {
        $array[] = $row['customer_name'] . " " . $row['address'] . " " . $row['street'] . " " . $row['phone_1'].  " " . $row['phone_2']. " " .  $row['phone_4']. " " . $row['phone_3']." id#" . $row['customer_id'];
    }
    //return JSON array
    echo json_encode($array);
}
?>

【问题讨论】:

标签: mysql


【解决方案1】:

只需将 streets 表加入您的内部查询(我省略了外部部分,因为它不会改变):

SELECT customer_id, customer_name, address, street, phone_1, phone_2, phone_3, 
       phone_4, CONCAT(customer_name, ' ', address, ' ', street, ' ', phone_1, 
                      ' ', phone_2, ' ', phone_3, ' ', phone_4) as `mysearch`
    FROM customers
    INNER JOIN streets ON streets.street_id = customers.street_id

所以INNER JOIN ...这部分是你需要添加的。

我假设streets 表有一个street_id 字段。使用它的实际名称(可能只是 id)。

【讨论】:

  • 谢谢,产生了我需要的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
相关资源
最近更新 更多