列が異なる2つの別々のテーブルのデータを3番目のテーブルに結合しようとしていますが、
エラーコード1054:フィールドリストの列 'Company'が不明です
ポップアップし続けます。
私の現在のコードは:
INSERT INTO Company (Year, Company, Revenue, Profits)
(select Year, Company, Revenue, Profits from
(select Year, Comp_Name from Comp_Info
union
select Revenue, Profits from Comp_Financials)
AS tempTable);
Comp_Financialsテーブル:
Comp_Infoテーブル:
両方のテーブルは、作成済みのテーブルに結合されます:Company(ID int auto_increment、Year int、Company varchar(20)、Revenue int、Profits int、Primary key(ID))
どんな助けでも大歓迎です!
JOIN
の代わりにID
by UNION
を使用する必要があります。JOIN
を使用すると、サブクエリは必要ありません。
また、(
の後のSELECTの前のINSERT INTO
は必要ありません。
したがって、機能するクエリは次のとおりです。
INSERT INTO Company (Year, Company, Revenue, Profits)
SELECT CI.Year, CI.Comp_Name AS Company, CF.Revenue, CF.Profits
FROM Comp_Info AS CI
JOIN Comp_Financials AS CF ON CF.ID = CI.ID;
詳細:
UNION
で試したのは間違ったアプローチです。小さな例で説明しましょう。
Comp_Info
とComp_Financials
は、例の一時テーブルです。
CREATE TEMPORARY TABLE Comp_Info (Id INT, Year INT, Comp_Name VARCHAR (200));
INSERT INTO Comp_Info (Id, Year, Comp_Name) VALUES
(1, 2005, 'Wal-Mart'), (2, 2005, 'Exxon Mobil'), (3, 2005, 'General Motors');
CREATE TEMPORARY TABLE Comp_Financials (Id INT, Revenue INT, Profits INT);
INSERT INTO Comp_Financials (Id, Revenue, Profits) VALUES
(1, 288189, 10267), (2, 270772, 25330), (3, 193517, 2805);
サンプルデータを使用すると、UNION
は次のようになります。
SELECT Year, Comp_Name FROM Comp_Info
UNION
SELECT Revenue, Profits FROM Comp_Financials;
|Year | Comp_Name |
|----------|---------------- |
|2005 | Wal-Mart |
|2005 | Exxon Mobil |
|2005 | General Motors |
|288189 | 10267 |
|270772 | 25330 |
|193517 | 2805 |
ただし、同じサンプルデータを使用すると、JOIN
は次のようになります。
SELECT CI.Year, CI.Comp_Name AS Company, CF.Revenue, CF.Profits
FROM Comp_Info AS CI
JOIN Comp_Financials AS CF ON CF.ID = CI.ID;
| Year | Company | Revenue | Profits
|------ |------------------ |---------- |---------
| 2005 | Wal-Mart | 288189 | 10267
| 2005 | Exxon Mobil | 270772 | 25330
| 2005 | General Motors | 193517 | 2805