如何查询未知变量?

时间:2011-05-30 17:10:39

标签: php mysql

我知道这听起来很混乱,所以这里有详细的解释:

在表格中我有以下内容:customer_id,agent_id,brief_is,added_by

  1. 客户ID是客户的ID

  2. 代理商ID是服务代理商

  3. brief_is是一个descritpion

  4. added_by包含添加它的客户或添加它的代理的ID。

  5. 现在我可以通过查询added_by获取客户ID来获得结果,但现在我还要添加一个排序功能,该功能将显示所有结果,其中added_by是客户的,但是由agent_id添加。

    我是否需要为added_for设置另一个字段,或者是否有另一种显示这些结果的方法。

    查询示例:

        /* Get data. */
    $sql="SELECT brief_is, customer_id, agent_id, added_by FROM the_brief 
        WHERE dcustomer_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))
        {
    
      $cust = $row['customer_id'];
      $agent = $row['agent_id'];
      $brief = $row['brief_is'];
    
    
     print("");
     }
    
      }
    

4 个答案:

答案 0 :(得分:1)

下面的查询将返回由代理添加的特定客户的所有行:

SELECT customer_id, agent_id, brief_is, added_by
WHERE customer_id=<CUSTOMERID>
AND added_by IN (SELECT agent_id FROM agents)

答案 1 :(得分:1)

如果我理解正确,您希望通过将结果限制(不排序)到代理而不是客户添加the_brief条目的结果来改进查询。
如果是这种情况,那么您只需在查询中添加额外的验证:agent_id=added_by 现在您的查询将如下所示:

SELECT brief_is, customer_id, agent_id, added_by 
FROM the_brief 
WHERE customer_id = '$id'
AND agent_id = added_by

修改
你的评论引导我看下面的代码。告诉我,如果它是正确的:

SELECT brief_is, customer_id, agent_id, added_by 
FROM the_brief 
WHERE customer_id = '$id'
AND agent_id != customer_id

您也可以使用<>代替!=

答案 2 :(得分:0)

目前还不是很清楚,听起来你要求同样的事情:

 SELECT brief_is, customer_id, agent_id, added_by FROM the_brief 
    WHERE agent_id= '$id'";

你的意思是什么?如果你必须保留两种信息:

  1. 谁添加了这个嫌疑人
  2. brefi指的是
  3. 然后你必须提供更多信息。

    如果客户或代理商仅为自己添加简报,则您不需要其他字段。

答案 3 :(得分:0)

找到它。我需要做的就是使用&lt;&gt;因为不等于customer_id而且会给出agent_id