从MySql中选择全部并加入其他

时间:2015-12-13 18:13:12

标签: php mysql codeigniter

我有这个codeigniter功能

function allClients($orderby = 'clients_company_name', $sort = 'ASC')
{

    //profiling::
    $this->debug_methods_trail[] = __function__;

    //declare
    $conditional_sql = '';

    //check if any specifi ordering was passed
    if (! $this->db->field_exists($orderby, 'clients')) {
        $orderby = 'clients_company_name';
    }

    //check if sorting type was passed
    $sort = ($sort == 'asc' || $sort == 'desc') ? $sort : 'ASC';

    //----------sql & benchmarking start----------
    $this->benchmark->mark('code_start');

    //_____SQL QUERY_______
    $query = $this->db->query("SELECT *
                                      FROM clients
                                      ORDER BY $orderby $sort");

    $results = $query->result_array(); //multi row array

    //benchmark/debug
    $this->benchmark->mark('code_end');
    $execution_time = $this->benchmark->elapsed_time('code_start', 'code_end');

    //debugging data
    $this->__debugging(__line__, __function__, $execution_time, __class__, $results);
    //----------sql & benchmarking end----------

    //return results
    return $results;

}

它从表客户端中选择所有数据。其中一个是" client_team_profile_id" - 该客户的所有者。

我还需要加入其他桌面 - 团队资料。在那里我们可以找到team_profile_id(系统中有用户ID)和team_profile_full_name - 用户名。

Table: clients

clients_id|clients-company_name|client_address|clients_team_profile_id
1         |Apple               |some street   |2
2         |Dell                |some street   |5


Table team_profile

team_profile_id | team_profile_full_name|
2               |John                   |
5               |Bob                    |

我需要从表CLIENTS中选择所有数据(我们可以看到 - 选择*),并获得连接到客户端的团队用户的名称,并为结果设置参数 - AS f.ex. client_owner_name。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

因此,您可以将此JOIN添加到现有查询

SELECT c.*, t.team_profile_full_name as client_owner_name
FROM clients c
    JOIN team_profile t ON t.team_profile_id = c.clients_team_profile_id
ORDER BY $orderby $sort"

您可能还需要更改此位代码以使用表格别名

 //check if any specifi ordering was passed
if (! $this->db->field_exists($orderby, 'clients')) {
    $orderby = 'c.clients_company_name';
}

function allClients($orderby = 'c.clients_company_name', $sort = 'ASC')