2011-05-23 32 views
0

我有两个表:帐户和授权。如何加入到具有特定条件的表

帐户表具有客户和代理商的全名和ID。授权表具有在该客户下的客户和代理的标识。帐户表具有全名,以及代理和客户的ID。

我一直收到代理商名称而不是客户名称。不知道如何解决这个问题!

更新:我能够得到正确的ID,但仍然显示客户的名称。
代码:

//Query 
$sql = "SELECT authorizations.customer_id, accounts.fullname 
     FROM authorizations 
     INNER JOIN accounts ON 
     authorizations.system_id = accounts.authorizating_customer 
     WHERE authorizations.agent_id = '$did'"; 

$result=mysql_query($query); 
$num=mysql_numrows($result); 
mysql_close(); 
echo ""; 
$i=0; 
while ($i < $num) { 
    $name = mysql_result($result, $i, "fullname"); 
    echo ""; 
    echo ""; 
    $i++; 
} 
+1

您自己加入表格,而不是加入帐户'FROM授权LEFT JOIN授权' – feeela 2011-05-23 14:33:54

+1

只是为了记录:echo“”;与试图不显示任何东西一样有用。更糟的是;你是。它很混乱。你可以删除它,因为它实际上没有做任何事情。 – 2011-05-23 14:44:16

回答

2

尝试

$sql = "SELECT 
      authorizations.customer_id, 
      accounts.fullname 
     FROM 
      authorizations 
       LEFT JOIN 
        accounts 
       ON 
        accounts.authorizing_person = authorizations.customer_id 
     WHERE 
      authorizations.agent_id = '$agentid' 
     ORDER BY 
      accounts.id DESC"; 

$result = mysql_query($query); 

$num = mysql_numrows($result); 

mysql_close(); 

echo ""; 

$i=0; 
while ($i < $num) { 

    $name = mysql_result($result,$i,"fullname"); 
    echo ""; 
    echo ""; 
    $i++; 
} 
+0

嗨,我试过。但它给我的代理人名称不是客户的名字。 – AAA 2011-05-23 14:47:53

+0

好吧,然后尝试将'accounts.fullname'更改为客户名称的列名称。 – 2011-05-23 14:57:02

1

我不知道你的表的结构,但你可以按照这个伪代码

SELECT name_of_person FROM accounts WHERE authorizing_person = (SELECT authorizing_person FROM authorization WHERE agent_id = '$agentid'" 
+0

给我同样的结果,它代表了我的代理名称。 – AAA 2011-05-23 15:56:46

0

我知道了。只需使用customer_id而不是authorizing_customer。