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

标签 mysql sql

我之前也问过类似的问题,但是因为无法正确解释,所以删掉了。这完美地说明了这一点。

我有 4 个表:

  1. 客户
  2. 代理
  3. Client_agent_aprovals
  4. 订阅

-

Clients table has:  id, client_id, client_name
Agents table has: id, agent_id, agent_name
Client_agent_approvals has:  id, client_id, agent_id
subscriptions has: id, sales_id, client_id, agent_id

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

我该怎么做?

更新:

在得到一些答案后我尝试了这个:

       $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

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

关于mysql - 如果您没有所需的变量,如何从数据库中选择字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7113348/

相关文章:

php - 使用 WHERE 子句问题在 MySQL 中选择随机条目

php - 数据库中的特殊字符显示不正确

MySQL 仅从 SELECT 创建具有自动增量的临时表

php - EXISTS 总是返回真简单查询

mysql - #1271 - 操作 'UNION' 的排序规则混合非法

mysql - 在不使用限制的情况下为用户选择最近的记录

java - hibernate的sql查询问题

SQL Server Management Studio 显示字段 varchar(max) 的完整内容

sql - 在从实际表中删除行之前触发从相关表中删除行

sql - SQL分组依据用户定义函数的输出