如何对以前的查询结果执行SQL搜索

时间:2014-02-08 06:12:01

标签: php sql

所以在我的phpmyadmin数据库中,我有两个表,'用户'和'调色板'。在我的PHP脚本中,我正在解析来自“用户”的数据并在单独的html文件上输出信息。我的目标是在表'palette'上执行SQL查询,但只搜索'users'的结果。例如,我的“用户”查询返回100个用户。我想现在在“调色板”上搜索相同的100个用户,以返回其匹配的“调色板”信息。类似的东西:

$pal_sql = "SELECT * FROM palette WHERE (user subscription_plan!='NULL')";
$pal_query = mysqli_query($dbs, $pal_sql);
$activerPalUsers = mysqli_num_rows("pal_query);
if(mysqli_num_rows($user_query) >= 1){
    while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) {
...

我想要的结果与上面的代码类似。这可能吗?什么是最好的方法。以下是我搜索活动“用户”的工作代码。

'palette'表包含有关'users'中按ID分类的每个用户的其他信息。我只想为活跃用户解析调色板数据。第一个查询显示活动用户,但我无法单独检查用户是否在“调色板”表中处于活动状态。

<?php
    $sql = "SELECT * FROM users WHERE subscription_plan!='NULL' ORDER BY id ASC";
    $user_query = mysqli_query($dbc, $sql);
    $activeUsers = mysqli_num_rows($user_query);
    if(mysqli_num_rows($user_query) >= 1){
        while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) {
            $userData .= "<tr>"; //general user information
            $userData .= "<td>";
            $userData .= $row["id"];
            $userData .= "</td>";
            $userData .= "<td>";
            $userData .= $row["email"];
            $userData .= "</td>";
            $userData .= "<td>";
            $userData .= $row["firstname"]."&nbsp;".$row["lastname"];
            $userData .= "</td>";
            $userData .= "<td>";
            $userData .= $row["subscription_plan"];
            $userData .= "</td>";
            $userData .= "<td>";
            $userData .= $row["ship_name"];
            $userData .= "</td>";
            $userData .= "<td>";
            $userData .=  $row["address"];
            $userData .= "</td>";
            $userData .= "</tr>";
        } 
    } else {
        $userData = "<tr><td colspan='6' style='text-align: center;'><strong>No listings found...</strong></td></tr>";
    }
?>

如果我的问题有意义,请告诉我,如果需要,我可以尝试以不同的方式重新解释。谢谢你的时间。

3 个答案:

答案 0 :(得分:0)

您可以在查询中使用JOIN功能在某些条件下连接两个表的记录。因此,只需一个查询,您就可以访问所需的所有数据。此外,您的PHP代码的复杂性也会降低。

答案 1 :(得分:0)

您可以使用

为查询创建视图

创建视图

现在,您可以在该视图上执行类似于表格的选择。

http://www.w3schools.com/sql/sql_view.asp

听起来您可能想要使用JOIN来简化单个查询:http://www.w3schools.com/sql/sql_join.asp

答案 2 :(得分:0)

“我的目标是在表'调色板'上执行SQL查询,但只搜索'用户'的结果。”

上面很难弄清楚你想要什么,但一个合格的猜测就是你正在寻找如何加入表格

示例:

在这种情况下,基于users.id和palette.user_id的值之间的关系,在同一查询中选择了两个表。

SELECT * FROM palette 
JOIN users ON (users.id = palette.id)
WHERE (users.subscription_plan!=NULL)