Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql连接两个表_Mysql_Sql_Join - Fatal编程技术网

Mysql连接两个表

Mysql连接两个表,mysql,sql,join,Mysql,Sql,Join,我在两个不同的数据库中有两个表 Kalix2-->我有一个表PHU公司 Asterisk-->这里有一个名为cdr的表 在PHU公司中,我有CompanyName列,公司名称采用这种格式 CompanyName AccuWebHosting 在另一个表中,我有另一列clid,它以以下格式存储公司名称 clid "AccuWebHosting-EN" <6618083563> clid “AccuWebHosting EN” 现在,我的问题是如何基于此列

我在两个不同的数据库中有两个表

  • Kalix2
    -->我有一个表
    PHU公司
  • Asterisk
    -->这里有一个名为
    cdr
    的表
  • 在PHU公司中,我有CompanyName列,公司名称采用这种格式

       CompanyName
      AccuWebHosting
    
    在另一个表中,我有另一列clid,它以以下格式存储公司名称

        clid
       "AccuWebHosting-EN" <6618083563> 
    
    clid
    “AccuWebHosting EN”
    
    现在,我的问题是如何基于此列在这两个表之间建立连接。在这两个表中,它们是唯一具有一些公共数据的列。没有其他列具有类似的数据

    请帮帮我。提前谢谢

    SELECT  a.*, b.*
    FROM    ph_Companies a
            INNER JOIN otherTable b
                ON b.clid LIKE CONCAT('%', a.CompanyName, '%')
    
    注意,如果需要大型数据库,则此查询非常慢,因为它需要完整表扫描。原因是您的模式设计“糟糕”。我建议你把桌子改成这样

    CREATE TABLE ph_Companies
    (
        ID INT PRIMARY KEY,
        CompanyName VARCHAR(20),
        -- OTHER COLUMNS HERE
    );
    
    CREATE TABLE otherTable 
    (
        ID INT AUTO_INCREMENT PRIMARY KEY,
        CompanyID INT,
        CompanyName VARCHAR(20),
        clid VARCHAR(50),
        -- OTHER COLUMNS HERE
        CONSTRAINT tb_fk FOREIGN KEY (CompanyID)
            REFERENCES ph_Companies (ID)
    );
    
    SELECT  a.*, b.*
    FROM    ph_Companies a
            INNER JOIN otherTable b
                ON a.ID = b.CompanyID
    
    你会有这样一个问题

    CREATE TABLE ph_Companies
    (
        ID INT PRIMARY KEY,
        CompanyName VARCHAR(20),
        -- OTHER COLUMNS HERE
    );
    
    CREATE TABLE otherTable 
    (
        ID INT AUTO_INCREMENT PRIMARY KEY,
        CompanyID INT,
        CompanyName VARCHAR(20),
        clid VARCHAR(50),
        -- OTHER COLUMNS HERE
        CONSTRAINT tb_fk FOREIGN KEY (CompanyID)
            REFERENCES ph_Companies (ID)
    );
    
    SELECT  a.*, b.*
    FROM    ph_Companies a
            INNER JOIN otherTable b
                ON a.ID = b.CompanyID
    

    这比上面的查询要好得多。

    如果您觉得有答案解决了问题,请单击白色复选标记(大约15分钟到一小时后)将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的老问题上。