MySQL加入两个不相关的表

时间:2014-10-16 10:53:40

标签: php mysql json

在我的网站上,我有一个带有选择字段的表单。在那个领域,我用一些ajax代码给出了输入的建议。这些建议来自我在每次按键时动态创建的.json文件。

所以这个JSON文件填充了一个列表。

JSON文件:

{
    "suggestions": [
        {
            "value": "Commandos: Behind Enemy Lines"
        },
        {
            "value": "Commandos 3: Destination Berlin"
        },
        {
            "value": "Commandos 2: Men of Courage"
        },
        {
            "value": "Commandos: Beyond the Call of Duty"
        }
    ]
}

然而,该列表由两个表组成。这些表彼此没有任何关系。两张桌子都有一个游戏名称'这只是一个VARCHAR列,我希望这两个列成一个大列表。在一个列表中从它们获得结果的最佳(最有效)方法是什么?

数据库

  

表1(赠品)

     

赠品| gamename

     

-

     

表2(steam_app)

     

appid |名字|型

我现在正在做的是对MySQL进行2次单独查找,然后将所有结果放入一个PHP数组中。我还对每个结果执行array_search以防止重复输入。

<?php
// query - BQ Game List
$sql = "SELECT 
            gamename as value
        FROM giveaway
        WHERE gamename LIKE '$query%'
        GROUP BY gamename
        ORDER BY count(gamename) DESC
        LIMIT 50";
$result = mysqli_query($dbConnection, $sql);

if ($result->num_rows > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        $json['suggestions'][] = $row;
        // create one array with all results to make it easier to use array_search()
        $haystack[] = $row['value'];
    }
}

// query - Steam App List
$sql = "SELECT 
            name as value
        FROM steam_app
        WHERE name LIKE '$query%'
            AND (type = 'game'
                OR type = 'dlc')
        ORDER BY name
        LIMIT 50";
$result = mysqli_query($dbConnection, $sql);

if ($result->num_rows > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        // Check if value isn't already in the array
        if (array_search($row['value'], $haystack) === false) {
            $json['suggestions'][] = $row;
            // create one array with all results to make it easier to use array_search()
            $haystack[] = $row['value'];
        }
    }
}

// No results
if (!isset($json)) {
    $json['suggestions'] = '';
}

// CLOSE CONNECTION
mysqli_close($dbConnection);

echo json_encode($json);
?>

现在我想知道这是多么有效率。由于执行两个单独的查找和大量的array_searches听起来像3个资源密集型操作。因为在表单字段中的每次按键时都会调用此查询。我想知道单个MySQL查询是否效率更高。例如,使用UNION。

对此有何见解?

0 个答案:

没有答案