-1

2 つの異なるデータベースに 2 つのテーブルがあります。

  1. Kalix2-->私は1つのテーブルを持っていますph_Companies
  2. Asterisk--> ここに というテーブルがありますcdr

ph_Companies には CompanyName 列があり、会社名はこの形式です。

   CompanyName
  AccuWebHosting

他のテーブルには、会社名を次の形式で格納する別の列clidがあります。

    clid
   "AccuWebHosting-EN" <6618083563> 

さて、私の質問は、この列に基づいてこれら 2 つのテーブルを結合するにはどうすればよいかということです。両方のテーブルで、これらはいくつかの共通データを持つ唯一の列です。他の列に同様のデータはありません。

私を助けてください。前もって感謝します。

4

1 に答える 1

0
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

これは、上記のクエリよりもはるかに優れています。

于 2013-01-18T14:52:56.627 に答える