Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果没有所需的变量,如何从数据库中选择字段?_Mysql_Sql - Fatal编程技术网

Mysql 如果没有所需的变量,如何从数据库中选择字段?

Mysql 如果没有所需的变量,如何从数据库中选择字段?,mysql,sql,Mysql,Sql,我以前问过一个类似的问题,但因为无法正确解释而将其删除。这完全说明了这一点 我有4张桌子: 客户 代理人 客户、代理人、代理人 订阅 - 现在,我如何构造一个查询,以便让我的销售代理看到客户购买了哪些其他产品。我认为正确的步骤是包括客户代理批准表,因为它将包含他们的客户ID列表,以及任何其他人也是他们的代理 我该怎么做 更新: 在得到一些ASNWER后,我尝试了以下方法: $sql="SELECT s* FROM Client_agent_approvals

我以前问过一个类似的问题,但因为无法正确解释而将其删除。这完全说明了这一点

我有4张桌子:

客户 代理人 客户、代理人、代理人 订阅 -

现在,我如何构造一个查询,以便让我的销售代理看到客户购买了哪些其他产品。我认为正确的步骤是包括客户代理批准表,因为它将包含他们的客户ID列表,以及任何其他人也是他们的代理

我该怎么做

更新:

在得到一些ASNWER后,我尝试了以下方法:

       $sql="SELECT s*
            FROM Client_agent_approvals caa
           INNER JOIN Subscriptions s ON s.client_id = caa.client_id
           WHERE caa.agent_id = '$id'
           AND s.agent_id <> '$id'";  
           $result=mysql_query($sql);

          $query = mysql_query($sql) or die ("Error: ".mysql_error());

         if ($result == "")
         {
      echo "";
      }
       echo "";


        $rows = mysql_num_rows($result);

       if($rows == 0)
        {
        print("");

          }
         elseif($rows > 0)
          {
        while($row = mysql_fetch_array($query))
         {

        $product = $row['product'];

         print("Products they have are: $product");
         }

         }
我所看到的只是他们的产品:


现在出什么问题了?

假设订阅是您正在寻找的东西:

如果您了解客户和代理人:

SELECT *
FROM SUBSCRIPTIONS
WHERE CLIENT_ID = @THE_CLIENT_ID -- My client
    AND AGENT_ID <> @THE_AGENT_ID -- But not my subscriptions
如果您只知道代理,并且想要所有客户端:

SELECT *
FROM SUBSCRIPTIONS
WHERE AGENT_ID <> @THE_AGENT_ID -- Not my subscriptions
    AND CLIENT_ID IN (
        SELECT CLIENT_ID FROM SUBSCRIPTIONS WHERE AGENT_ID = @THE_AGENT_ID
    ) -- all my clients
然后适当地加入以获得名称

让我们先让它在PHP之外工作。从mysql命令行运行此命令时会得到什么结果

SELECT s.*
FROM Client_agent_approvals caa
INNER JOIN Subscriptions s
    ON s.client_id = caa.client_id
WHERE caa.agent_id = SOME_ID -- Note no quotes should be around an INT
    AND s.agent_id <> SOME_ID -- Note no quotes should be around an INT

如果这不起作用,请将数据转储到此处,以便我们可以查看数据和预期结果。

您只需要代理客户的所有销售,对吗

-- assuming you've set @myagent to the agent_id you are looking for
SELECT s.*
FROM Client_agent_approvals caa
    INNER JOIN Subscriptions s ON s.client_id = caa.client_id
WHERE caa.agent_id = @myagent
    AND s.agent_id <> @myagent -- if you want to exclude agent's own sales

销售信息是否存储在SUBSCRIPTIONS表中?是的,其中只有购买的内容、代理id和客户id。您可以给出一些示例数据,以及根据这些数据您希望得到什么输出吗?如果您看到他们的产品:那么您必须有行,对吗?否则,您将点击第一个if条件并打印空行。我假设您在设置$result的地方忽略了$query的执行。对不起,我不熟悉PHP,你能用一些客户端程序尝试查询并报告错误或添加PHP标记吗?嘿,我正在尝试,但结果是空的。让我再核实一下,然后告诉你我用一个问题更新了这个问题。你现在能查一下吗。试试看。给我几分钟some_id是登录的代理的id,所以我必须在$variable周围使用,否?我按照您的建议删除了引号,得到了以下结果:“where子句”中的未知列“1394u023ujdfja”。字母数字行是代理的id..您所指的Select s.*是什么?我用一个查询更新了这个问题。你现在能查一下吗。thanksI将订阅表别名为s,将客户代理批准别名为caa。
-- assuming you've set @myagent to the agent_id you are looking for
SELECT s.*
FROM Client_agent_approvals caa
    INNER JOIN Subscriptions s ON s.client_id = caa.client_id
WHERE caa.agent_id = @myagent
    AND s.agent_id <> @myagent -- if you want to exclude agent's own sales