我是MySQL(一般sql)的新手,我正在努力解决一些问题。我有2个表,第一个表包含"客户"列表,第二个表包含"用户"列表。在第一个表中,有一些列包含"合同经理"one_answers"业务开发"的userID号。ID只是一个数字,它引用了'users'表中的ID号。然后,users表存储用户的名、姓等信息。
我试图运行一个查询,将返回合同经理和业务开发经理的姓和名,然后在PHP中使用它们。
我有以下查询;
SELECT
*
FROM
clients
INNER JOIN
tenantusers AS cm ON cm.tenusr_ID = clients.cli_ContractManager
INNER JOIN
tenantusers AS bd ON bd.tenusr_ID = clients.cli_BusinessDevelopment
ORDER BY cli_Name;
在MySQL仪表板返回正确的结果,但我不能在PHP中使用这个,因为
$t = $row['tenusr_FirstName'] . " " . $row['tenusr_LastName'];
返回查询的最后一个结果,而不是前一个结果。说实话,我也不知道怎么弄到。我试过使用db.tenusr_FirstName
,它抛出错误。
任何帮助都会很感激。
+--------+----------+------------------+---------------+----------------------+-------------------------+
: cli_ID : cli_Name : cli_AddressLine1 : cli_Town : cli_ContractManager : cli_BusinessDevelopment :
+-------------------------------------------------------------------------------------------------------+
: 1 : ACME : On a street : Makeuptington : 1 : 2 :
+--------+----------+------------------+---------------+----------------------+-------------------------+
+-----------+-----------------+-----------------+--------------+
: tenusr_ID : tenusr_Username : tenusr_LastName : tenusr_Email :
+--------------------------------------------------------------+
: 1 : Sam : Smithers : make@it.com :
+--------------------------------------------------------------+
: 2 : Tom : Watson : tom@fake.net :
+--------------------------------------------------------------+
我已经添加了表格——最上面是客户表,其次是用户表。
PHP中不能有同名的列。只选择需要的列,并使用AS
SELECT
cm.tenusr_Username AS contract_FirstName,
cm.tenusr_LastName AS contract_LastName,
bd.tenusr_Username AS business_FirstName,
bd.tenusr_LastName AS business_LastName
....
你可以使用
$t = $row['contract_FirstName'] . " " . $row['contract_LastName'];
另一个答案也是正确的。我离开了clients.*
,如果你需要的话,它将从客户端选择所有行,但是如果你不需要的话,你应该忽略它。
SELECT
clients.*, cm.FirstName as CMFirstName, cm.LastName as CMLastName, bd.FirstName as BDFirstName, bd.LastName as BDLastName
FROM
clients
INNER JOIN
tenantusers AS cm ON cm.tenusr_ID = clients.cli_ContractManager
INNER JOIN
tenantusers AS bd ON bd.tenusr_ID = clients.cli_BusinessDevelopment
ORDER BY cli_Name;
在PHP中$bd = $row['BDFirstName'] . " " . $row['BDLastName'];
$cm = $row['CMFirstName'] . " " . $row['CMLastName'];
如果不是所有用户都有合同经理和业务开发人员,您应该将INNER JOIN
更改为LEFT JOIN
,因此它将包括没有其中一个或另一个或没有两者的客户。