I am very new to MySQL (sql in general) and I am trying to work something out. I have 2 tables, the first table contains a list of 'clients', the second table a list of 'users'. In the first table there are columns that contain the userID number of the 'contract manager' and the 'business development'. The ID is just a number, that references the ID number in the 'users' table. The users table then stores the First name, last name, etc of the user in question.
I am trying to run a query that will return the first and last names of both the contract manager, and the business development manager, and then use them in PHP.
I have the following query;
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;
Which in MySQL dashboard returns the correct results, however I can't use this in PHP because
$t = $row['tenusr_FirstName'] . " " . $row['tenusr_LastName'];
Returns the last result of the query, and not the previous. And truth told, I have no idea how to get them. I've tried to use db.tenusr_FirstName
and it throws errors.
Any help would be appreciated.
+--------+----------+------------------+---------------+----------------------+-------------------------+
: 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 :
+--------------------------------------------------------------+
I've added the tables - top is the clients table, second the users.
You can't have columns with the same name in PHP. You'll want to SELECT only the columns you need, and alias the name columns with 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
....
You can then use
$t = $row['contract_FirstName'] . " " . $row['contract_LastName'];
The other answer is also right. I left clients.*
in which will select all rows from clients if you need them, but you should omit it if you don't need that.
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;
In PHP
$bd = $row['BDFirstName'] . " " . $row['BDLastName'];
$cm = $row['CMFirstName'] . " " . $row['CMLastName'];
If not all users will have a contract manager and business development person you should change your INNER JOIN
to a LEFT JOIN
so it will include clients without one or the other or without both.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.